0

WAMP で index.php を実行していますが、やりたいことは 200 Ok ヘッダーを返すことだけです。私は持っている:

echo "Index3<br />";
//All I need to do is execute a method.
$request_method = strtolower($_SERVER['REQUEST_METHOD']);
echo "Serving " .$request_method;
//And send back a response header.
header('HTTP/1.1 200 Ok');
foreach (getallheaders() as $name => $value) {
    echo "$name: $value\n<br />";
}

Firebug には何も表示されません ([コンソール] タブと [ネット] タブの両方)。foreach には、Accept、Connect、Cache などに関するすべてのヘッダーが表示されますが、200 は表示されませんか? 上記のコードで 400 応答に変更すると、コンソールに何かしか表示されません。なぜですか?

4

2 に答える 2

1

ヘッダーは、ブラウザーに送信される最初のものでなければなりません。echoの前にステートメントがありますheader。これはできません。

また、 は のようHTTP/1.1 200 OKな「ヘッダー」とは見なされません。通常、一部のプロパティで使用できます。Firebug は「ネットワーク」タブにそれを表示するはずです。各リクエストの横にリストされます。AcceptCachestatusCode

于 2012-11-08T19:39:15.883 に答える
0

への呼び出しは、ステートメントheader()の前に来る必要があります。echoコンテンツのエコーを開始したら、HTTP ヘッダーを変更するには遅すぎます。

これは、ヘッダーが HTTP 本文の前にあるためです。before header 呼び出しの使用を制御できない場合はecho、出力バッファ --- ob_start()およびob_end_flush() --- を使用して、それらがヘッダーに干渉するのを防ぐことができます。

于 2012-11-08T19:42:07.890 に答える