Отправлять заголовки HTTP до или после заголовка cookie? - PullRequest
3 голосов
/ 26 ноября 2010

Мне было интересно, есть ли какие-либо проблемы или различия между отправкой обычных заголовков до или после отправки заголовков cookie.Некоторые браузеры предпочитают определенный порядок заголовкам?Если заголовок cookie слишком большой, последующие заголовки никогда не будут проанализированы?

setcookie("TestCookie", $value);
header("Content-type: text/javascript");

или

header('Location: http://www.example.com/');
setcookie("TestCookie", $value);

или

setcookie("SuperLargeCookie", $massive_value);
setcookie("TinyCookie", $small_value);
header("Status: 404 Not Found");

Ответы [ 3 ]

4 голосов
/ 26 ноября 2010

Разницы нет. Протокол Http не указывает, что заголовки должны быть в определенном порядке. Браузеры также не различают по порядку заголовков.

Общая длина заголовков Http имеет ограничение. Это ограничение накладывается сервером, а не браузером. Обычно между 8K и 16K. Однако это настраивается.

2 голосов
/ 26 ноября 2010

Это действительно не имеет значения, если другие HTTP-заголовки не были отправлены.setcookie() на самом деле пишет сам заголовок:

Set-Cookie: SuperLargeCookie=whatever; Max-Age=3600; Version=1

аналогично вызову header():

Location: http://www.example.com/redirect
1 голос
/ 26 ноября 2010

HTTP-сообщения все время охватывают пакеты, поэтому вам будет сложно переполнить одно, если вы не затерёте туда тонны килобайт.Если вам нужно сделать это, подумайте о лучшем дизайне.Браузеры не заботятся о порядке заголовков, поскольку разные серверы (и приложения) постоянно добавляют заголовки.Куки-файлы реализованы в виде заголовков HTTP, поэтому они должны выглядеть следующим образом в запросе HTTP:

Cookie: TestCookie=value\r\n
Content-type: text/javascript\r\n
\r\n

Я не уверен, что заголовок Status должен делать в вашем примере, но я не думаю, чтоэто правильно, поскольку веб-сервер установит код ответа 200 OK, если код выполняется правильно ... Страница функции header имеет следующий пример:

<?php
header("HTTP/1.0 404 Not Found");
?>

С заголовком PHP , просто убедитесь, что вы не пишете текст перед его выдачей.В противном случае вы можете все испортить.

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