0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

`Sec-Fetch-*` ヘッダ

Posted at

Sec-Fetch-* ヘッダ

とは何か

Webブラウザが様々な手段(documentの取得, <img>, stylesheet, <script>, <iframe>, workder, etc.)でサーバへリクエストを送る際に、そのリクエストのメタデータ(「何のための、どういうリクエストか」)を送信・開示するためのリクエストヘッダ
リクエスト時にWebブラウザが自動で付加する
もちろん詐称出来ないよう、JavaScriptから手動で付加・変更することはできない。

種類としては、以下がある

  • Sec-Fetch-Dest: 取得の用途(ex: document, img, style, etc.)を開示する
  • Sec-Fetch-Mode: リクエストの種類(cors, navigate, no-cors, same-origin, websocket)を開示する
  • Sec-Fetch-Site: リクエストを発火させたページとリクエスト先(このヘッダを受け取ったサーバ)との関係(cross-site, same-origin, same-site, none)を開示する
  • Sec-Fetch-User: リクエストが、ナビゲーション(documentの取得, <iframe> etc. によるページのリクエスト)である、かつユーザの操作に起因するものか(←が真のときのみ?1(=true)、偽ならヘッダは付加されない)を開示する

Sec-Fetch-Dest ヘッダ

Sec-Fetch-Destリクエストヘッダは、リクエストの目的・用途をサーバに開示するリクエストヘッダ。

設定されうる値は、以下。

  • audio: <audio>からのリクエスト
  • audioworklet: audioWorklet.addModule()によるリクエスト
  • document: HTMLのナビゲーションによるリクエスト
  • embed: <embed>からのリクエスト
  • empty: navigator.sendBeacon(), EventSource, <a ping="">, <area ping="">, fetch(), XMLHttpRequest, WebSocket, Cache API, HTMLのdownload=""属性, 「別名で保存」機能, <link rel=prefetch>, <link rel=prerender>などによるリクエスト
  • font: CSSの@font-faceによるリクエスト
  • frame: <frame>からのリクエスト
  • iframe: <iframe>からのリクエスト
  • image: <img>, <picture>, /favicon.ico, SVGの<image>, CSSのbackground-image, cursor, list-style-imageなどによるリクエスト
  • manifest: <link rel=manifest>からのリクエスト
  • object: <object>からのリクエスト
  • paintworklet: CSS.paintWorklet.addModule()によるリクエスト
  • report: Content Security Policy(CSP)およびNetwork Error Logging(NEL)のリクエスト
  • script: <script>importScripts()によるリクエスト
  • serviceworker: navigator.serviceWorker.register()によるリクエスト
  • sharedworker: SharedWorkerのリクエスト
  • style: <link rel=stylesheet>やCSSの@importによるリクエスト
  • track: <track>からのリクエスト
  • video: <video>からのリクエスト
  • worker: Workerのリクエスト
  • xslt: <?xml-stylesheet>からのリクエスト

参照

Sec-Fetch-Mode ヘッダ

Sec-Fetch-Modeリクエストヘッダは、リクエストのモード(種類)を開示するリクエストヘッダ。

  • same-origin: リクエストが同一オリジン宛であることを担保するために使用される
  • cors: Cross-Origin Resource Sharing(CORS)に則ってリクエストされた場合に使用される
  • no-cors: リクエストがクロスオリジンにもかかわらず、corsじゃないときに使用される
    (なおこのとき、CORS-safelisted methodsかつCORS-safelisted request-headersな条件に合致するリクエストにのみ制限され、しかもリクエストに成功していてもブラウザのセキュリティ機構によってレスポンスボディが空文字にマスクされていたり、ステータスコードも0になっていたりなど使い物にならない状態にされる)
  • navigate: document間の遷移時に使用される
  • websocket: WebSocketの接続を確立する際に使用される

参照

Sec-Fetch-Site ヘッダ

リクエストを発火させたページとリクエスト先(このヘッダを受け取ったサーバ)との関係(cross-site, same-origin, same-site, none)を開示するリクエストヘッダ。

参照

Sec-Fetch-User ヘッダ

リクエストが、ナビゲーション(documentの取得, <iframe> etc. によるページのリクエスト)である、かつユーザの操作に起因するものか(←が真のときのみ?1(=true)、偽ならヘッダは付加されない)を開示するリクエストヘッダ。

参照

参照

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?