same-origin 環境でヘッダの調査
前提
フロントから fetch で api サーバにアクセスする際に cors であればリクエストに必ず Origin ヘッダが添付されるが same-origin の環境であればどうなのかをテストした。目的としては same-origin な環境で api として稼働させるパスを設置した際に cors 同様の対応だとプリフライトがないので何か代わりのフラグを立てる必要性があるのかを検証するためである。
JS ファイル内で fetch を使ったアクセス
method | Origin header |
---|---|
GET | なし |
HEAD | なし |
POST | あり |
PUT | あり |
DELETE | あり |
フラグがなければ fetch でアクセスする url をブラウザバーに入力して開けばレスポンスを表示することができてしまう。cookie での制御も同一ドメインであることから意味を成さず、これらを踏まえて独自のフラグを立てる必要があるという結論に至った。
safari が sec-fetch-mode をさっさと実装すれば上記のフラグも不必要になるんやが。
開発者ツールのコンソールからのアクセス
開発者ツールのコンソールは same-origin へのアクセスでも Sec-Fetch-Mode が cors になる。第二者がコードを操作できる点を考えるとそらそうかと納得できる。