質問: **PHPで304コードを意図的に発生させた後、PHPで304コードを確認してみたい**のですが、 「更新されていないからキャッシュを使うように」というレスポンスが返ってきた時点でその内容(304?)をPHP で確認することはできるでしょうか? ・http_response_code()では確認不可? --- > > 304は「更新されていないからキャッシュを使うように」というレスポンス > > > 「304 Not Modified」をハンドリングしたい --- 404は下記で表示されるのですが ``` header( "HTTP/1.1 404 Not Found" ) ; echo http_response_code(); ``` 304は下記で表示されないのは何故でしょうか? ``` header('HTTP/1.1 304 Not Modified'); echo http_response_code() ```
回答: `http_response_code()` は正しく `304` を返しているものの、キャッシュを使うようにという 304 Not Modified を実際に送信している以上、キャッシュがあればそれが使われ、なければ白紙のページが表示されるのではないでしょうか。 cli版で試して問題なかったので、ここに気づかずコメントしてしまいました。 RFC2616においても304レスポンスはレスポンスボディを**含んではならない**とされています。これに対して404ではレスポンスボディを含むことができ、その内容がブラウザに表示されます。 どうしてもPHP内で確認したいのであれば、ファイルに書き出すとか、Cookieに設定するとか、echoした後に200に戻す(出力バッファが前提)、といったことが必要になりますが・・・正しくレスポンスコードが設定されているかどうか確認したいなら、ブラウザの開発者ツールやデバッグプロキシを使い、実際に送信されているヘッダを確認したほうがよいのではないでしょうか?