Origin Header

Baseline 已廣泛支援

此特性已經十分成熟,可在許多裝置和瀏覽器版本上使用。自 2020 年 7 月以來,它已在各大瀏覽器中可用。

HTTP Origin 請求頭指示了導致該請求的方案、主機名和埠)。例如,如果使用者代理需要請求頁面中包含的資源,或由其執行的指令碼獲取的資源,則頁面的源可能會包含在請求中。

頭型別 請求頭
禁止請求頭

語法

http
Origin: null
Origin: <scheme>://<hostname>
Origin: <scheme>://<hostname>:<port>

指令

null

源是“隱私敏感”的,或是不透明源(特定情況列在描述部分)。

<scheme>

所使用的協議。通常是 HTTP 協議或其安全版本 HTTPS。

<hostname>

源伺服器的域名或 IP 地址。

<port> 可選

伺服器監聽的埠號。如果沒有給出埠,則從方案推斷出請求服務的預設埠(例如,HTTP URL 的80)。

描述

Origin 頭與 Referer 頭類似,但它不公開路徑,並且可能為 null。它用於為源請求提供安全上下文,除非源資訊敏感或不必要。

一般來說,使用者代理會向以下請求新增 Origin 請求頭:

上述規則有一些例外;例如,如果在no-cors 模式下發出跨域 GETHEAD 請求,則不會新增 Origin 頭。

在許多情況下,Origin 頭的值可能為 null,包括(但不限於):

  • 方案不是 httphttpsftpwswssgopher 之一的源(包括 blobfiledata)。
  • 跨域影像和媒體資料,包括 <img><video><audio> 元素中的資料。
  • 使用 createDocument() 以程式設計方式建立的文件,從 data: URL 生成的文件,或者沒有建立者瀏覽上下文的文件。
  • 跨域重定向。
  • 使用 Content-Security-Policysandbox 指令(其值不包含 allow-same-origin)提供的文件。
  • 具有 sandbox 屬性(其值不包含 allow-same-origin)的 iframe
  • 網路錯誤的響應。
  • 對於非 cors 請求模式(例如,基本表單提交),Referrer-Policy 設定為 no-referrer

注意: Stack Overflow 上有一個更詳細的列表,列出了可能返回 null 的情況:瀏覽器何時傳送 Origin 頭?瀏覽器何時將 Origin 設定為 null?

示例

http
Origin: https://mdn.club.tw
http
Origin: https://mdn.club.tw:80

規範

規範
Web Origin 概念
# 第 7 節
Fetch
# Origin-Header

瀏覽器相容性

另見