簡體   English   中英

在Cookie標頭之前或之后發送HTTP標頭?

[英]Send HTTP headers before or after a cookie header?

我想知道在發送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");

沒有區別。 Http協議沒有指定標頭按特定順序排列。 瀏覽器也不會根據標題的順序進行區分。

Http標頭的總長度確實有限制。 此限制由服務器而非瀏覽器強加。 通常介於8K和16K之間。 但是這是可配置的。

只要尚未發送其他HTTP標頭,這無關緊要。 setcookie()實際上寫了一個標題:

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

類似於header()調用:

Location: http://www.example.com/redirect

HTTP消息始終跨越數據包,因此除非你在那里干擾大量的千字節,否則你很難過度填充。 如果您需要這樣做,請考慮更好的設計。 瀏覽器不關心標題的順序,因為不同的服務器(和應用程序)一直追加標題。 Cookie是作為HTTP標頭實現的,因此它們應該在HTTP請求中顯示為:

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

我不確定你的例子中Status頭應該做什么,但我不認為它是正確的,因為如果代碼正確執行,web服務器將設置200 OK響應代碼... 頭文件功能頁面有這個例子:

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

使用PHP 標頭功能,只需確保在發出之前沒有寫出任何文本。 否則,你可能搞砸了一切。

暫無
暫無

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

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