首页 > 其他分享 >HTTP: referer那些事

HTTP: referer那些事

时间:2022-12-07 19:55:41浏览次数:40  
标签:HTTP 请求 referrer http 那些 nginx 403 referer

http请求中的referrer

  • http请求体的header中有一个referrer字段,用来表示发起http请求的源地址信息,这个referrer信息是可以省略但是不可修改的,就是说你只能设置是否带上这个referrer信息,不能定制referrer里面的值。

  • 服务器端在拿到这个referrer值后就可以进行相关的处理,比如图片资源,可以通过referrer值判断请求是否来自本站,若不是则返回403或者重定向返回其他信息,从而实现图片的防盗链。上面出现403就是因为,请求的是别人服务器上的资源,但把自己的referrer信息带过去了,被对方服务器拦截返回了403。

  • 在前端可以通过meta来设置referrer policy(来源策略),具体可以设置哪些值以及对应的结果参考这里。所以针对上面的403情况的解决方法,就是把referrer设置成no-referrer,这样发送请求不会带上referrer信息,对方服务器也就无法拦截了。

查看当前页面的referrer值

浏览器中referrer默认的值是no-referrer-when-downgrade,就是除了降级请求的情况以外都会带上referrer信息。降级请求是指https协议的地址去请求http协议,所以上面403的情况还有另一种解决方法就是,请求的图片地址换成http协议,自己的地址使用http协议,这样降级请求也不会带上referrer。查看源代码,即可在<header>中看到referrer的配置:
image

nginx配置图片防盗链

最后再说一下这种根据referrer拦截,在服务器如何配置。我自己服务器用的nginx,这里就说下nginx的配置。首先打开nginx的配置文件:conf/nginx.conf,在server下面添加如下:

location ~* \.(gif|jpg|png|jpeg)$ {
         valid_referers none  valid.url.com;
         if ($invalid_referer) {
               return 403;
         }
}

此时在http 请求体中检测到referer不匹配,server端会返回403错误。

标签:HTTP,请求,referrer,http,那些,nginx,403,referer
From: https://www.cnblogs.com/alberto/p/16964354.html

相关文章

  • http常见状态码有哪些?【杭州多测师_王sir】【杭州多测师】
    一、1开头的状态码(信息类)100:接受的请求正在处理,信息类状态码二、2开头的状态码(成功类)2xx(成功)表示成功处理了请求的状态码200:(成功)服务器已成功处理了请求。三、3开......
  • easylogging++的那些事(四)源码分析(八)崩溃处理相关
    目录系统信号处理器setHandler接口构造函数堆栈信息跟踪生成堆栈信息对外提供的接口在上一篇我们分析了性能跟踪的实现,今天我们来看看崩溃处理相关的一些内容。在eas......
  • httpRunner使用汇总
    以前不了解httpRunner实现机制很不喜欢它,认为就是简单的接口录制与回放,只适合处理简单的接口逻辑。随着最近对httpRunner再次解读,发现它也能实现复杂接口的自动化用例,而且......
  • http post请求超时
    1.请求的高德的api2.本地测试,httpclient和okhttp都用过,本地没有问题,但是部署在客户的内网服务器上,就会有几率出现读取超时的情况,这个是截图 3.我在服务器上也pin......
  • android 中对apache httpclient及httpurlconnection的选择
    在官方blog中,android工程师谈到了如何去选择apacheclient和httpurlconnection的问题:原文见http://android-developers.blogspot.com/2011/09/andro......
  • java http请求工具类
    1、首先maven<dependency><groupId>commons-httpclient</groupId><artifactId>commons-httpclient</artifactId><version>3.1</version></dependency><d......
  • netcore3.1升级到netcore6.0那些事儿
    netcore3.1升级到netcore6.0那些事儿netcore3.1升级到netcore6记录1:对于已存在的数据库,可以新建一个新版本控制台先用【DbFirst】的方式,生成数据库的dbcontext......
  • HTTP_响应消息_响应头和Response_功能介绍
    HTTP_响应消息_响应头格式:头名称:值常见的响应头:1.Content-Type:服务器告诉客户端本次响应体数据格式以及编码格式2.Content-disposition:服务器告诉客户端以什么......
  • IIS fails to run ASP.NET Core site - HTTP Error 502.5
    IISfailstorunASP.NETCoresite-HTTPError502.5回答1Yourproblemisabadweb.configfile:<aspNetCorerequestTimeout="02:00:00"processPath="%L......
  • Python异步爬虫(aiohttp版)
    异步协程不太了解的话可以去看我上篇博客:https://www.cnblogs.com/Red-Sun/p/16934843.htmlPS:本博客是个人笔记分享,不需要扫码加群或必须关注什么的(如果外站需要加群或关......