103 Early Hints(RFC 8297)を使うと、サーバーは最終レスポンスの準備が整う前に、一部のヘッダーを送信できます。通常は、rel=preload や rel=preconnect を指定した Link ヘッダーです。サーバーがまだページを生成している間に、ブラウザーは接続を開き、重要な CSS、フォント、スクリプトのダウンロードを始められます。同じリクエストに対する最終レスポンス(通常は 200 OK)は、その後に返されます。
ブラウザーはヒントをあくまで参考として扱います。Chromium ベースのブラウザーは、HTTP/2 と HTTP/3 でのトップレベルのナビゲーションについて、103 に含まれる preload と preconnect のヒントを利用します。そのほかのブラウザーの対応状況はさまざまです。103 を解釈できないクライアントは、これを無視します。CDN によっては 103 レスポンスを代わりに送ってくれるものもあり、たとえば Cloudflare は、以前のレスポンスの Link ヘッダーをもとに 103 を生成します。
ヒントはサーバーが最終ステータスを決める前に届くため、最終レスポンスが結局リダイレクトやエラーになり、プリロードしたリソースが使われずに終わることもあります。103 に含まれるヘッダーは最終レスポンスには引き継がれないので、必要なものは最終レスポンスにも含めてください。
レスポンス例
HTTP/1.1 103 Early Hints
Link: </assets/app.css>; rel=preload; as=style
Link: <https://cdn.example.com>; rel=preconnect
HTTP/1.1 200 OK
Date: Fri, 06 Nov 2026 10:15:32 GMT
Content-Type: text/html; charset=utf-8
Link: </assets/app.css>; rel=preload; as=style
Link: <https://cdn.example.com>; rel=preconnect
Transfer-Encoding: chunked SEO とリダイレクトチェック
クローラーは暫定レスポンスを無視して最終レスポンスをインデックスするため、103 が SEO に直接影響することはありません。間接的には、早期ヒントによって、実際のユーザーにとっての Largest Contentful Paint などの読み込み指標が改善される可能性があります。リダイレクトチェッカーは各ホップの最終ステータスを一覧表示します。103 レスポンスは HTTP クライアントが内部で処理するため、ホップとしては表示されません。
よくある原因と主な用途
- Cloudflare Early Hints などの CDN の機能が、以前のレスポンスで確認した
Link: rel=preloadヘッダーを再送している場合。 - データベースへの問い合わせやページのレンダリングの間に、アプリケーションサーバーが 103 を送信している場合。
- ヒントの効果がないように見える場合。サイトが HTTP/2 または HTTP/3 で配信されているか、ヒントがサブリソースではなくページのナビゲーションに対して送られているかを確認してください。