http请求头origin、referer和host区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了http请求头origin、referer和host区别相关的知识,希望对你有一定的参考价值。

参考技术A 描述请求将被发送的目的地,包括且仅仅包括域名和端口号。 HTTP/1.1 的所有请求报文中必须包含一个Host头字段,且只能设置一个。

请求头origin表明了请求来自于哪个站点。包括且仅仅包括协议、域名和端口,并不包含任何路径信息。经常用于CORS请求或者POST请求,可以看到response有对应的header:Access-Control-Allow-Origin。

@CrossOrigin(origins="http://wx.xxxx.com:80")

@RequestMapping(value = "list", method = RequestMethod.POST)

public String list(HttpServletRequest request, HttpServletResponse response)



告知服务器请求的原始资源的URI,其用于所有类型的请求,并且包括协议、域名、路径和查询参数。

在以下几种情况Referer不会被发送:

1)来源页面采用的协议为表示本地文件的 "file" 或者 "data" URI;

2)当前请求页面采用的是非安全协议,而来源页面采用的是安全协议(HTTPS);

3)直接输入网址或通过浏览器书签访问;

4)使用 javascript 的 Location.href 或者是 Location.replace();

5)使用html5中noreferrer;

6)使用iframe的hack写法去除referer。

请求头中referer与origin功能相似,但有如下几点不同:

1、只有跨域请求,或者同域时发送post请求,才会携带origin请求头,而referer不论何种情况下,只要浏览器能获取到请求源都会携带,除了上面提到的几种情况。

2、如果浏览器不能获取请求源,那么origin满足上面情况也会携带,不过其值为null。referer则不同,浏览器如果不能获取请求源,那么请求头中不会携带referer。

3、origin的值只包括协议、域名和端口,而erferer不但包括协议、域名、端口,还包括路径和参数。

以上是关于http请求头origin、referer和host区别的主要内容,如果未能解决你的问题,请参考以下文章

Http referer origin

自定义请求头引起预检请求

数据挖掘http请求头中Referer的含义和作用

人回答如何修改http请求头中的origin吗

第19期HTTP请求头referer

前端面试—Http请求头中Referer的含义和作用