多次设置cookie标头

时间:2011-12-03 03:13:38

标签: php codeigniter cookies

我在资产控制器中有这个代码来获取图像:

function images($path,$image_name)
{
    $image = "../assets/images/$path/$image_name";

    if (file_exists ($image) && (is_file($image))) {
        $name = $image_name;
    } else {

    }

    $file = getimagesize($image);
    $filesize = filesize($image);

    $time_cache = 360000000000;
    $ts = gmdate("D, d M Y H:i:s", time() + $time_cache) . " GMT";
    header("Content-Type: {$file['mime']}\n");
    header("Content-disposition: inline; filename=\"$name\"\n");
    header("Content-Length: $filesize\n");
    header("Expires: $ts");
    header("Pragma: cache");
    header("Cache-Control: max-age=$time_cache");
    readfile ($image);
}

我已在true中将csrf保护设置为 config/config.php file ,并且每个图片请求都会通过 Set-Cookie 标头发送。所以csrf-cookie可以在某些页面上多次设置。这有什么值得担心的,如果有的话,有没有办法防止这种情况发生?

2 个答案:

答案 0 :(得分:2)

我设法用header_remove("set-cookie");

执行此操作

所以代码看起来像这样

header("Content-Type: {$file['mime']}\n");
header("Content-disposition: inline; filename=\"$name\"\n");
header("Content-Length: $filesize\n");
header("Expires: $ts");
header("Pragma: cache");
header("Cache-Control: max-age=$time_cache");
header_remove("set-cookie");
readfile ($image);

答案 1 :(得分:1)

如果只有一个页面/图像请求你多次使用setcookie函数,php会在一个响应中多次向浏览器发送相同的cookie。也许有些浏览器崩溃了。

由于多个cookie定义,我在使用CakePHP中的会话对象意外启动循环时,在Internet Explorer中遇到了ajax请求问题。我只是检测到这个问题嗅探了与wireshark的连接。