Fetch合规浏览器发送的Origin头中可包含哪些协议?
Fetch合规浏览器Origin头的协议细节
支持的协议类型
Fetch合规浏览器在发送Origin头时,会携带以下几类协议(仅针对能生成非null序列化源的场景):
http、https:这是跨源请求中最普遍的协议,所有合规浏览器都会在这类页面发起的跨源请求中携带对应协议的Origin头ftp:部分现代浏览器仍支持从FTP页面发起跨源请求,此时Origin头会包含ftp://前缀ws、wss:WebSocket页面发起跨源请求时,Origin头会携带ws或wss协议标识
另外,file协议的情况比较特殊:部分浏览器(比如Firefox)会在本地file://页面发起跨源请求时发送带file://的Origin头,但Chrome等浏览器会将其视为不透明源,发送null。由于行为不一致,通常不将其纳入稳定的协议集合。
协议集合的基数
如果只统计所有合规浏览器都一致支持、会发送非null Origin头的协议,基数是5:http、https、ftp、ws、wss。
不透明源的特殊处理
data:、blob:、filesystem:这类属于不透明源,浏览器对它们进行字节序列化后得到的结果是null,所以这类请求的Origin头值为null,不会携带对应的协议前缀。
标准层面的说明
Fetch标准确实没有硬性限制Origin头的协议范围,但浏览器的实现会遵循同源策略的延伸逻辑:只有具备可序列化源的协议,才会在Origin头中携带完整的源信息;不透明源则统一发送null。
内容的提问来源于stack exchange,提问作者jub0bs
相关产品推荐
相关产品推荐

