簡體   English   中英

多次設置cookie header

[英]set-cookie header multiple times

我在資產 controller 中有這段代碼來獲取圖像:

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 header 發送。因此 csrf-cookie 可以在某些頁面上設置多次。 這是需要擔心的事情嗎?如果是,是否有辦法防止這種情況發生?

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

如果僅在一個頁面/圖像請求中多次使用setcookie function,php 將在一次響應中多次向瀏覽器發送相同的 cookie。 也許某些瀏覽器在閱讀時崩潰了。

由於多個 cookie 定義,我在 Inte.net Explorer 中遇到了 ajax 請求的問題,當不小心將 CakePHP 中的 session object 啟動到循環中時。 我只在嗅探與 wireshark 的連接時檢測到該問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM