set-cookie header несколько раз - PullRequest
3 голосов
/ 03 декабря 2011

У меня есть этот код в контроллере ресурсов для получения изображений:

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

Я установил защиту csrf на true в config/config.php file, и каждый запрос на изображениеотправлено с заголовком Set-Cookie.Таким образом, csrf-cookie может быть установлен несколько раз на некоторых страницах.Об этом стоит беспокоиться, и если да, то есть ли способ предотвратить это?

Ответы [ 2 ]

2 голосов
/ 06 декабря 2011

Мне удалось сделать это с 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 голос
/ 03 декабря 2011

Если только в одном запросе страницы / изображения вы используете функцию setcookie много раз, php будет отправлять браузеру много раз один и тот же файл cookie в одном ответе. Может быть, некоторые браузеры вылетают, читая это.

У меня были проблемы с ajax-запросами в Internet Explorer из-за нескольких определений cookie, когда случайно запускался объект сеанса в CakePHP в цикле. Я только обнаружил эту проблему, анализируя соединение с wireshark.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...