计网基础-请求头Origin和Referer

loading 2023年04月13日 51次浏览

看到这一段代码,发现自己对于二者的区别不是特别明晰,因此写一篇博客做记录:

1. 概念

Origin:

请求标头 Origin 表示了请求的(协议、主机、端口)。例如,如果一个用户代理需要请求一个页面中包含的资源,或者执行脚本中的 HTTP 请求,那么该页面的就可能被包含在这次请求中。

Referer:

Referer 指示了请求来自于哪个具体页面,包含服务器名和路径的详细URL,浏览器自动添加到http请求 Header 中,无需手动设置。
比如从http://a.com跳到http://b.com,请求头就会带上referer:http://a.com这个地址。

2. 区别

  1. Origin的值可以为null(为了维护请求的安全和隐私)
  2. Origin不会暴露URL的path部分(跟在协议和主机名后面的路径)
var url = new URL('https://developer.mozilla.org/en-US/docs/Web/API/URL/pathname');
var result = url.pathname; // Returns:"/en-US/docs/Web/API/URL/pathname"
  1. Origin会在以下情况被携带:
    1. 跨域请求
    2. 除了get和head以外的同域请求
  2. Referer会在以下情况不被携带:
    1. 来源页面采用的协议为表示本地文件的 "file" 或者 "data" URI;
    2. 当前请求页面采用http,而来源页面采用的是https。