codeigniter 多次设置cookie标头

7ivaypg9  于 2022-12-07  发布在  其他
关注(0)|答案(2)|浏览(164)

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

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);
}

我已经在config/config.php file中将csrf保护设置为**true,并且每次对图像的请求都使用Set-Cookie**头发送。因此,csrf-cookie可能在某些页面上被设置多次。是否需要担心这一点?如果是的话,是否有办法防止这种情况?

zpqajqem

zpqajqem1#

我用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);
jdzmm42g

jdzmm42g2#

如果你在一个页面/图片请求中多次使用setcookie函数,php会在一次响应中多次发送相同的cookie到浏览器,也许一些浏览器会在阅读这个cookie时崩溃。
我在IE浏览器中遇到过 AJAX 请求的问题,由于多个cookie定义,当不小心启动CakePHP中的session对象进入循环时。我只在用wireshark嗅探连接时才发现这个问题。

相关问题