26700


**PHPで304コードを意図的に発生させた後、PHPで304コードを確認してみたい** のですが、  
「更新されていないからキャッシュを使うように」というレスポンスが返ってきた時点でその内容(304？)をPHP で確認することはできるでしょうか？  
・http_response_code()では確認不可？

* * *

> 304は「更新されていないからキャッシュを使うように」というレスポンス

[「304 Not
Modified」をハンドリングしたい](https://ja.stackoverflow.com/questions/12880/304-not-
modified-%E3%82%92%E3%83%8F%E3%83%B3%E3%83%89%E3%83%AA%E3%83%B3%E3%82%B0%E3%81%97%E3%81%9F%E3%81%84)

* * *

404は下記で表示されるのですが

[code]

    header( "HTTP/1.1 404 Not Found" ) ;
    echo http_response_code();
    
[/code]

304は下記で表示されないのは何故でしょうか？

[code]

    header('HTTP/1.1 304 Not Modified');
    echo http_response_code()
    
[/code]


CC BY-SA 3.0
2016-06-11T00:04:58.960
26644
2016-06-13T02:34:33.107
2017-04-13T12:52:39.113
-1
7886
question
php
PHPで304 Not Modifiedを出力して、PHPで304 を確認したい


`http_response_code()` は正しく `304` を返しているものの、キャッシュを使うようにという 304 Not Modified
を実際に送信している以上、キャッシュがあればそれが使われ、なければ白紙のページが表示されるのではないでしょうか。  
cli版で試して問題なかったので、ここに気づかずコメントしてしまいました。

[RFC2616](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.5)においても304レスポンスはレスポンスボディを
**含んではならない** とされています。これに対して404ではレスポンスボディを含むことができ、その内容がブラウザに表示されます。

どうしてもPHP内で確認したいのであれば、ファイルに書き出すとか、Cookieに設定するとか、echoした後に200に戻す（出力バッファが前提）、といったことが必要になりますが・・・正しくレスポンスコードが設定されているかどうか確認したいなら、ブラウザの開発者ツールやデバッグプロキシを使い、実際に送信されているヘッダを確認したほうがよいのではないでしょうか？


CC BY-SA 3.0
2016-06-13T02:29:03.223
26700
2016-06-13T02:34:33.107
2016-06-13T02:34:33.107
8000
8000
26644
answer