Origin Header
HTTP Origin
请求头指示了导致该请求的源(方案、主机名和端口)。例如,如果用户代理需要请求页面中包含的资源,或由其执行的脚本获取的资源,则页面的源可能会包含在请求中。
语法
http
Origin: null
Origin: <scheme>://<hostname>
Origin: <scheme>://<hostname>:<port>
指令
描述
Origin
头与 Referer
头类似,但它不公开路径,并且可能为 null
。它用于为源请求提供安全上下文,除非源信息敏感或不必要。
一般来说,用户代理会向以下请求添加 Origin
请求头:
上述规则有一些例外;例如,如果在no-cors 模式下发出跨域 GET
或 HEAD
请求,则不会添加 Origin
头。
在许多情况下,Origin
头的值可能为 null
,包括(但不限于):
- 方案不是
http
、https
、ftp
、ws
、wss
或gopher
之一的源(包括blob
、file
和data
)。 - 跨域图像和媒体数据,包括
<img>
、<video>
和<audio>
元素中的数据。 - 使用
createDocument()
以编程方式创建的文档,从data:
URL 生成的文档,或者没有创建者浏览上下文的文档。 - 跨域重定向。
- 使用
Content-Security-Policy
的sandbox
指令(其值不包含allow-same-origin
)提供的文档。 - 具有 sandbox 属性(其值不包含
allow-same-origin
)的 iframe。 - 网络错误的响应。
- 对于非
cors
请求模式(例如,基本表单提交),Referrer-Policy
设置为no-referrer
。
注意: Stack Overflow 上有一个更详细的列表,列出了可能返回 null
的情况:浏览器何时发送 Origin 头?浏览器何时将 Origin 设置为 null?
示例
http
Origin: https://mdn.org.cn
http
Origin: https://mdn.org.cn:80
规范
规范 |
---|
Web Origin 概念 # 第 7 节 |
Fetch # Origin-Header |
浏览器兼容性
加载中…
另见
Host
Referer
- 同源策略
- 浏览器何时发送 Origin 头?浏览器何时将 Origin 设置为 null? (Stack Overflow)