header头中的Referer和X-Requested-With是啥含义?

Referer  是  HTTP  请求header 的一部分,当浏览器(或者模拟浏览器行为)向web 服务器发送请求的时候,头信息里有包含  Referer  。比如我在www.google.com 里有一个www.baidu.com 链接,那么点击这个www.baidu.com ,它的header 信息里就有:

Referer=http://www.google.com


由此可以看出来吧。它就是表示一个来源。看下图的一个请求的 Referer  信息。
 
Referer  的正确英语拼法是referrer 。由于早期HTTP规范的拼写错误,为了保持向后兼容就将错就错了。其它网络技术的规范企图修正此问题,使用正确拼法,所以目前拼法不统一。还有它第一个字母是大写。 
Referer的作用?

1.防盗链。

刚刚前面有提到一个小 Demo  。

我在www.google.com里有一个www.baidu.com链接,那么点击这个www.baidu.com,它的header信息里就有:

Referer=http://www.google.com 



那么可以利用这个来防止盗链了,比如我只允许我自己的网站访问我自己的图片服务器,那我的域名是www.google.com,那么图片服务器每次取到Referer来判断一下是不是我自己的域名www.google.com,如果是就继续访问,不是就拦截。

这是不是就达到防盗链的效果了?

将这个http请求发给服务器后,如果服务器要求必须是某个地址或者某几个地址才能访问,而你发送的referer不符合他的要求,就会拦截或者跳转到他要求的地址,然后再通过这个地址进行访问。

2.防止恶意请求。

比如静态请求是*.html结尾的,动态请求是*.shtml,那么由此可以这么用,所有的*.shtml请求,必须 Referer  为我自己的网站。

Referer=http://www.google.com 
空Referer是怎么回事?什么情况下会出现Referer?

首先,我们对空 Referer  的定义为, Referer  头部的内容为空,或者,一个 HTTP  请求中根本不包含 Referer  头部。

那么什么时候 HTTP  请求会不包含 Referer  字段呢?根据Referer的定义,它的作用是指示一个请求是从哪里链接过来,那么当一个请求并不是由链接触发产生的,那么自然也就不需要指定这个请求的链接来源。

比如,直接在浏览器的地址栏中输入一个资源的URL地址,那么这种请求是不会包含 Referer  字段的,因为这是一个“凭空产生”的 HTTP  请求,并不是从一个地方链接过去的。

那么在防盗链设置中,允许空Referer和不允许空Referer有什么区别?

允许 Referer  为空,意味着你允许比如浏览器直接访问,就是空。
 X-Requested-With
 
X-Requested-With请求头用于在服务器端判断request来自Ajax请求还是传统请求。
 
如果 requestedWith 为 null,则为同步请求。如果 requestedWith 为 XMLHttpRequest 则为 Ajax 请求。

if (request.getHeader("x-requested-with") != null    
    && request.getHeader("x-requested-with").equalsIgnoreCase("XMLHttpRequest")) {    
    out.print("该请求是 AJAX 异步HTTP请求。");    
}else{     
    out.print("该请求是传统的 同步HTTP请求。");    
}    

 
如何在发送请求是去掉它?

$.ajax({ 
url: 'http://www.zhangruifeng.com', 
beforeSend: function( xhr ) { 
xhr.setRequestHeader('X-Requested-With', {toString: function(){ return ''; }}); 
}, 
success: function( data ) { 
if (console && console.log){ 
console.log( 'Got data without the X-Requested-With header' ); 
} 
} 
}); 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是对这些常见的请求头部参数的简要解释: - `Host`:指定服务器的主机名或 IP 地址。它用于指示请求的目标服务器。 - `Connection`:指定客户端与服务器之间的连接状态。常见的取值有: - `'keep-alive'`:表示保持长连接,客户端与服务器之间可以进行多次请求和响应。 - `'close'`:表示关闭连接,客户端发送请求后会关闭与服务器的连接。 - `X-Requested-With`:通常用于指示请求是通过 AJAX 发起的。常见的取值有: - `'XMLHttpRequest'`:表示使用 XMLHttpRequest 对象发起的请求。 - `User-Agent`:用于模拟浏览器发送请求。它可以包含浏览器的名称、版本号和操作系统等信息,以便服务器了解请求的来源。例如: - `'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'`:Chrome 浏览器的 User-Agent。 - `Referer`:指定请求的来源 URL,用于告诉服务器当前请求是从哪个页面跳转过来的。例如: - `'https://www.example.com'`:表示请求来源于该页面。 - `Accept-Encoding`:指定客户端可接受的内容编码方式。常见的取值有: - `'gzip'`:表示客户端可以接受 GZIP 压缩后的内容。 - `Accept-Language`:指定客户端可接受的语言类型。常见的取值有: - `'en-US,en;q=0.9'`:表示客户端可以接受英语(美国)和英语(其他国家)。 - `Cookie`:用于发送请求时携带的 Cookie 信息。它可以包含服务器在之前的响应中设置的 Cookie 值,用于维持状态和身份验证等。 这些请求头部参数可以根据具体的需求进行设置,以满足与服务器之间的通信和交互要求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值