2010-11-26 5 views
3

Ich frage mich, ob es irgendwelche Probleme oder Unterschiede zwischen dem Senden normaler Header vor oder nach dem Senden von Cookie-Headern gibt. Ziehen einige Browser eine bestimmte Reihenfolge den Headern vor? Wenn der Cookie-Header zu groß ist, werden nachfolgende Header nie analysiert?Senden Sie HTTP-Header vor oder nach einem Cookie-Header?

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

oder

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

oder

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

Antwort

4

gibt es keinen Unterschied. Das Http-Protokoll gibt nicht an, dass Header in einer bestimmten Reihenfolge sein sollen. Browser unterscheiden auch nicht anhand der Reihenfolge der Header.

Die Gesamtlänge der Http-Header hat ein Limit. Diese Begrenzung wird vom Server und nicht vom Browser auferlegt. In der Regel zwischen 8K und 16K. Dies ist jedoch konfigurierbar.

2

Es spielt wirklich keine Rolle, solange die anderen HTTP-Header wurden nicht gesendet. setcookie() schreibt eigentlich einen Header selbst:

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

ähnlich einem header() Aufruf:

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

"Es ist wirklich egal, solange die anderen HTTP-Header nicht gesendet wurden" ... warte, also ist es egal? – Xeoncross

+0

Wenn Sie Text zwischen Header und Setcookie intervenieren, spielt es eine Rolle. und Sie erhalten die bekannten "Header bereits gesendet" Fehler – stillstanding

1

HTTP-Nachrichten umfassen Pakete die ganze Zeit, so dass Sie kaum einen überfüllen würden, es sei denn, Sie stecken Tonnen von Kilobyte darin. Wenn Sie dies tun müssen, überlegen Sie sich ein besseres Design. Browser interessieren sich nicht für die Reihenfolge der Header, da verschiedene Server (und Anwendungen) ständig Header anhängen. Cookies werden als HTTP-Header implementiert, so sollten sie wie so in der HTTP-Anforderung angezeigt:

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

Ich bin mir nicht sicher, was der Status-Header soll in Ihrem Beispiel tun, aber ich glaube nicht, dass es richtig ist da der Webserver einen 200 OK-Antwort-Code, wenn der Code korrekt ausführt gesetzt wird ... die Header Funktion Seite hat dieses examaple:

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

Mit der PHP Header Funktion, so stellen Sie sicher, dass Sie nicht einen Text vor dem Ausstellen schreiben. Sonst könntest du alles durcheinander bringen.

+0

Die Status-Header ist für PHPFastcgi - und war nur ein Beispiel. – Xeoncross

Verwandte Themen