【问题标题】:Cookies overload creating bad request, impossible to delete with php or jsCookie 超载创建错误请求,无法使用 php 或 js 删除
【发布时间】:2012-10-21 05:19:34
【问题描述】:

网站经常出现 HTTP400 Bad Request 错误,这是由于 2 个 cookie 太大造成的。

我使用 livestream.com 播放实时视频(使用 Flash),他们似乎使用 Akamai Analytics 为我的域设置了 4 个 cookie。 客户端LastHTimes clientLastPTimes AkamaiAnalytics_VisitIsPlaying AkamaiAnalytics_VisitLastCloseTime

前两个是在上次崩溃时出现超过 8000 个字符的问题。

所以尝试了 php 的方式来删除这些 cookie 这样做

setcookie(
  'clientLastPTimes', '', time() - 3600, '/','mydomain.com', false, false
);

setcookie('clientLastPTimes', '', 1);

不工作。

然后尝试在页面加载和卸载时对 Javascript 执行相同的操作。

function Delete_Cookie( name, path, domain ) {
  document.cookie=name+"="
  + ((path) ? ";path="+path:"")
  + ((domain)?";domain="+domain:"") 
  + ";expires=Thu, 01 Jan 1970 00:00:01 GMT";
}

Delete_Cookie('clientLastPTimes', '/', 'mydomain.com')

这些该死的饼干还在那里。有时它会创建其他具有相同名称的 cookie。发现这通常是由于路径或域略有不同。也试图只编辑他们的内容,而不设置向后的日期。

所以真的在这个问题上苦苦挣扎。 如果您知道如何删除这些 cookie 或做任何其他事情来避免 HTTP400 cookie 过载......我会非常感激。

非常感谢

约翰

【问题讨论】:

  • 您是否曾就此向 livestream.com 投诉过?看来这应该是他们需要解决的问题。 (话虽如此,他们的网站目前似乎有一些与飓风桑迪相关的问题,所以我怀疑如果你现在向他们投诉他们会特别响应)
  • 嘿,谢谢,您确实有一点,这不是好的做法,也没有任何记录表明他们正在使用 Akamai 分析。是的,他们情绪低落,甚至懒得写信给他们。

标签: php javascript cookies http-headers akamai


【解决方案1】:

试试下面的代码。还要注意以下几点:https://stackoverflow.com/a/6319162/881551

<?php

// I am using a larger expiration to account for server timezone differences.
// http://php.net/manual/en/function.setcookie.php#96813

$cookies = array(
    'clientLastHTimes', 
    'clientLastPTimes', 
    'AkamaiAnalytics_VisitIsPlaying', 
    'AkamaiAnalytics_VisitLastCloseTime'
);

foreach ($cookies as $cookie) {
    if (isset($_COOKIE[$cookie])) {
        $_COOKIE[$cookie] = '';
    }
    setcookie($cookie, "", time() - 90000);
    setcookie($cookie, "", time() - 90000, "/", $_SERVER['HTTP_HOST'], 0); // just in case
}
?>

【讨论】:

  • 嘿,非常感谢。所以尝试了你的代码,并得到了结果。基本上新的 cookie 显示已删除。 dl.dropbox.com/u/919737/img/cookies.PNG 这正常吗?因为 cookie 仍然显示在 Chrome 选项中。
  • 看起来不错。现在...下一步是:负责设置这些 cookie 的人(akamai、livestream 或您)都需要修复它,以便将来的 cookie 创建请求不会存储过多的数据而导致您的 400 错误。
  • 非常感谢。是的,似乎没什么可做的了。
【解决方案2】:

所以对于任何可能有类似问题的人...我找到了问题的根源,cookie 删除并没有真正起作用。这是 Chrome 的问题,当用户存在时,所有浏览器都会终止会话 cookie,但默认情况下不是 chrome。因此需要在 chrome 中添加选项来终止特定站点的会话。有点疯狂,但这是 Google 做出的一个选择,将浏览器恢复为关闭时的状态。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-26
    • 1970-01-01
    • 1970-01-01
    • 2012-01-18
    • 2011-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多