0

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

我使用 livestream.com 播放实时视频(使用 Flash),似乎他们使用 Akamai Analytics 为我的域设置 4 个 cookie。clientLastHTimes 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 过载......我会非常感激。

非常感谢

约翰

4

2 回答 2

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
}
?>
于 2012-10-31T17:20:00.437 回答
0

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

于 2012-11-01T10:04:44.063 回答