2010-11-26 22 views
3

クッキーヘッダーを送信する前または送信した後に通常のヘッダーを送信する際に問題や相違があるかどうかは疑問でした。一部のブラウザでは、ヘッダーに特定の順序が優先されますか?クッキーヘッダーが大きい場合、後続のヘッダーは決して解析されませんか?Cookieヘッダーの前または後にHTTPヘッダーを送信しますか?

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

答えて

4

違いはありません。 Httpプロトコルは、ヘッダーが特定の順序になるように指定していません。ブラウザはヘッダーの順番に基づいて区別しません。

Httpヘッダーの全長には制限があります。この制限は、ブラウザではなくサーバーによって課せられます。通常は8K〜16Kです。ただしこれは設定可能です。

2

それは本当に限り、他のHTTPヘッダが送信されていないとして、問題ではありません。 setcookie()は、実際にヘッダ自体を書き込みます。

header()コールに似
Set-Cookie: SuperLargeCookie=whatever; Max-Age=3600; Version=1 

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

"他のHTTPヘッダーが送信されていない限り、実際には問題ありません" ...待機するので問題ありませんか? – Xeoncross

+0

ヘッダーとsetcookieの間にテキスト出力が介在する場合は重要です。使い慣れた "ヘッダーはすでに送信されています"というエラーメッセージが表示されます – stillstanding

1

HTTPメッセージは常にパケットに広がっているので、そこに1トンのキロバイトが詰まっている場合を除き、あまりにも多くのメッセージを埋めすぎることになります。それを行う必要がある場合は、より良いデザインを検討してください。ブラウザーは、異なるサーバー(およびアプリケーション)が常にヘッダーを追加するため、ヘッダーの順序は気にしません。クッキーは、HTTPヘッダーとして実装されているので、そのHTTPリクエストに似彼らが表示される必要があります。

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

私はステータスヘッダがあなたの例で行うことになっているかわからないんだけど、私はそれが正しいだとは思いませんちょうどあなたがいないなら作る、PHP ヘッダ機能により

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

:ウェブサーバは、コードが正しく実行された場合... ヘッダ機能ページは、このexamapleを持っている200 OKレスポンスコードを設定しますので、それを発行する前にテキストを書き出してください。それ以外の場合、すべてを混乱させる可能性があります。

+0

ステータスヘッダーはPHPFastcgi用です。 – Xeoncross

関連する問題