ページが開けるのに画像だけ古い、APIがブラウザから呼べない、別URLへ転送され続ける。このような問題は、HTML本文ではなくHTTPレスポンスヘッダーを見ると原因を絞り込めます。
ここではHTTPヘッダー解析ツールへ実際のヘッダーを貼り付ける前提で、よく確認する項目と、設定ミスの読み取り方を整理します。公開情報として取得したヘッダーの解析はブラウザ内で行われます。
まずステータス行を読む
レスポンスの先頭には HTTP/2 200 のようなステータスがあります。代表的な意味は次のとおりです。
- 200:正常に内容が返っています。
- 301・308:恒久的な転送です。古いURLから新しいURLへ移した場合に使います。
- 302・307:一時的な転送です。意図せず繰り返すとリダイレクトループになります。
- 404:対象が見つかりません。URLや公開場所を確認します。
- 500番台:サーバー側で処理に失敗しています。
HTTP/2 200
content-type: text/html; charset=UTF-8
cache-control: public, max-age=3600
content-security-policy: default-src 'self'
strict-transport-security: max-age=31536000
不具合別に見るべきヘッダー
ファイルの種類がおかしい:Content-Type
CSSが適用されない、画像が表示されない場合は、Content-Typeが実際のファイル形式と一致しているか確認します。JSON APIなら一般に application/json、HTMLなら text/htmlです。
更新したのに古いまま:Cache-Control
max-ageが長いと、ブラウザやCDNが古いファイルを保持します。毎回無効化するのではなく、CSSやJavaScriptのURLに更新番号を付ける方法と組み合わせます。
APIがブラウザだけ失敗する:Access-Control-Allow-Origin
CORSエラーでは、呼び出し元を許可するレスポンスヘッダーが必要です。安易に * を指定せず、Cookieや認証情報の有無も含めて許可するオリジンを決めます。
別ページへ飛ばされる:Location
301や302と一緒に返る Locationを順番に追います。HTTPとHTTPS、wwwあり・なし、末尾スラッシュの設定が互いに転送し合っていないか確認してください。
セキュリティ設定は「あるか」だけで判断しない
- Strict-Transport-Security:HTTPS接続を継続して使わせます。HTTPSでの運用が安定してから設定します。
- Content-Security-Policy:読み込めるスクリプトや画像の出所を制限します。外部サービスを使う場合は必要な許可を整理します。
- X-Content-Type-Options: nosniff:ブラウザによる種類の推測を抑えます。
- Referrer-Policy:リンク先へ送る参照元情報の範囲を制御します。
値が厳しすぎると正規の機能まで止まり、緩すぎると保護になりません。解析結果をそのまま合否判定にせず、サイトで利用している機能と照らして調整します。
解析するときの手順
- 問題が起きるURLのステータスコードを確認する。
- 転送がある場合は、最終URLまでのLocationを追う。
- Content-TypeとCache-Controlを確認する。
- ブラウザの開発者ツールにCORSやCSPのエラーがないか見る。
- 変更後にもう一度取得し、期待したヘッダーになったか比較する。
検索クローラーへの公開範囲を確認する場合は、HTTPヘッダーだけでなく、robots.txtとnoindexの違いも確認してください。