Origin
Origin
リクエストヘッダーは、リクエストが発生したオリジン(スキーム、ホスト名、ポート番号)を示します。
例えば、ユーザーエージェントがページに含まれるリソース、または実行するスクリプトによってフェッチされるリソースをリクエストする必要がある場合、ページのオリジンがそのリクエストに含まれることがあります。
構文
Origin: null
Origin: <scheme>://<hostname>
Origin: <scheme>://<hostname>:<port>
ディレクティブ
null
-
オリジンが「プライバシーに配慮した」ものであるか、HTML仕様で定義された不透明なオリジンである(具体的な事例は解説の節に掲載されています)。
<scheme>
-
使用されるプロトコル。 通常、 HTTP プロトコルまたはそのセキュアバージョンである HTTPS です。
<hostname>
-
サーバーのドメイン名 (仮想ホスティングの場合) または IP アドレス。
<port>
省略可-
サーバーが待ち受けしている TCP ポート番号。 ポート番号が指定されていない場合、リクエストされたサービスの既定のポート番号(HTTP URL の場合は "80" など)が暗黙的に指定されます。
解説
Origin
ヘッダーは Referer
ヘッダーと似ていますが、パス全体が公開されるわけではなく、 null
になることがある点が異なります。
これは、オリジン情報が機密または不要となる場合を除き、オリジンリクエストの「セキュリティコンテキスト」を提供するために使用されます。
大まかに言うと、ユーザーエージェントが Origin
リクエストヘッダーを追加するのは以下のものです。
- オリジン間リクエスト
- 同一オリジンリクエスト、ただし
GET
またはHEAD
リクエストを除く(すなわち、同一オリジンのPOST
,OPTIONS
,PUT
,PATCH
,DELETE
の各リクエストに追加される。)
上記のルールにはいくつかの例外があります。例えば、オリジンを跨ぐ GET
または HEAD
リクエストが CORS モード外で行われた場合、 Origin
ヘッダーは追加されません。
Origin
ヘッダー値は様々な場合に null
になることがあります(網羅的ではない)。
- スキームが
http
,https
,ftp
,ws
,wss
,gopher
のいずれでもないオリジン(blob
,file
,data
を含む)。 - 別オリジンの画像やメディアデータ(
<img>
,<video>
,<audio>
要素の場合も含む)。 createDocument()
を使用してプログラム的に作成された文書、data:
URL から生成された文書、または作成者の閲覧コンテキストを持たない文書。- オリジン間のリダイレクト。
- iframeのサンドボックス属性が値
allow-same-origin
を含んでいない場合。 - ネットワークエラーとなったレスポンス。
Referrer-Policy
がno-referrer
に設定され、cors
以外のリクエストモードが設定された場合(単純な形式の投稿など)。
メモ: null
を返す可能性のあるケースについて、より詳しいリストが Stack Overflow の When do browsers send the Origin header? When do browsers set the origin to null? に掲載されています。
例
Origin: https://developer.mozilla.org
Origin: https://developer.mozilla.org:80
仕様書
Specification |
---|
The Web Origin Concept # section-7 |
Fetch Standard # origin-header |
ブラウザーの互換性
BCD tables only load in the browser