Open
Description
背景
接口需要获取页面URL。但是发现接口请求头Referer
字段只有域名信息,没有页面path信息。
Referer
含义
HTTP请求头字段「Referer」标记请求资源方的URL,比如:页面跳转,AJAX请求,静态资源请求等。
1.Referer
可能会包含origin, path, query string, 不会包含URL 片段
2. Referer
标记的是请求资源方的URL,不一定是当前页面的URL。比如一个外部CSS里加载了其他外部资源(图片/字体等),则Referer
是该CSS的URL。
取值
Referer有3种值:
- 无值
- 只包含origin
- 包含origin, path, query string
Referer
不是Referrer
HTTP请求头字段是「Referer」,但是单词拼写是错误的(正确的是Referrer
)。
注意:只有这个头部名字单词错误了。
控制Referer
取值
Referer
包含资源请求方的URL信息,可能会涉及信息泄露问题。资源请求方可以通过一些指令控制Referer
取值。
Referrer-Policy
响应头
资源方的响应头Referrer-Policy
可以控制该资源请求其他外部资源的请求Referer
取值。
- 默认值
strict-origin-when-cross-origin
- 指令存在兼容性问题,具体参考Browser compatibility
- 设置指令时需要考量的因素:
- 是否跨域
- 是否安全请求(HTTPS)
meta
标签
针对HTML资源可以采用页面<meta name="referrer" content="" />
作为Referrer-Policy
响应头的替代方案。
HTML referrerpolicy
属性
可以控制具体的外部资源的Referer
取值。