1. 首页 > 笙耀百科 >

referer头的作用 refrigeratous

ajax发送http请求时Referer的问题 (困扰我也好几天,请高手不吝赐教)

Referer:允许客户端给出页面的URL地址,客户端向服务器所发出请求的URL地址是从该页面上获得的。

referer头的作用 refrigeratousreferer头的作用 refrigeratous


ajax.open("GET", u, false); 其中u是提交路径

Referer的作用不是改变提交的路径

而是设置获得路径的

补充一下 当你从一个网站转到另一个网站的时候

后边的网站就可以获得你的referer值 从而知道是由什么地方转来的

也许我的理解有误 如果你有什么不同的看法咱们可以一起研究

HTTP request header:host, referer, origin的区别

请求头指明了请求将要发送到的服务器主机名和端口号。

如果没有包含端口号,会自动使用被请求服务的默认端口(比如HTTPS URL使用443端口,HTTP URL使用80端口)。

所有HTTP/1.1 请求报文中必须包含一个 Host 头字段。对于缺少 Host 头或者含有超过一个 Host 头的HTTP/1.1 请求,可能会收到 400 (Bad Request)状态码。

例如:Host: 指定要访问的服务器主机名和端口号

Referer 请求头包含了当前请求页面的来源页面的地址,即表示当前页面是通过此来源页面里的链接进入的。服务端一般使用 Referer 请求头识别访问来源,可能会以此进行统计分析、日志记录以及缓存优化等。

需要注意的是 referer 实际上是 "referrer" 误拼写。参见 HTTP referer on Wikipedia (HTTP referer 在上的条目)来获取更详细的信息。

Referer 请求头可能暴露用户的浏览历史,涉及到用户的隐私问题。

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

例如:

请求首部字段 Origin 指示了请求来自于哪个站点。该字段仅指示服务器名称,并不包含任何路径信息。该首部用于 CORS 请求或者 POST 请求(MDN中这样写,但是我试了patch/delete方法也会发送origin)。除了不包含路径信息,该字段与 Referer 首部字段相似。

例如:Origin:

组成:协议+域名+端口号

注意:只有跨域请求(可以看到 response 有对应的 header:Access-Control-Allow-Origin),或者同域时发送post请求,才会携带origin请求头。

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

而referer不论何种情况下,只要浏览器能获取到请求源都会携带。如果浏览器如果不能获取请求源,那么请求头中不会携带referer。

用于 CORS: 当我们的浏览器发出跨站请求时,服务器会校验当前请求是不是来自被允许的站点。服务器就是通过 Origin 字段的值来进行判断。

关于Http请求header之Referer讲解

刚好把手机银行嵌入办事通的项目写完,该项目http请求较多,期间遇到了不少坑,也学到了不少东西,趁这个机会,简单梳理下!

图为http常见的请求方式,经常使用的,就是POST和GET,二者的区别,这里也不多做介绍。项目大致是这样的,提供接口给手机银行,获取请求参数:

request.getQueryString()方法即可取得参数相关信息,随机访问办事通提供的三个接口,初定的接口,使用https协议,但办事通无法提供CA证书,后放弃(上一篇有提到过,无法绕过ssl验证)

随后办事通提供了另外接口,采用http协议:

采用Http发个简单Post请求,即可获取相应数据,测试环境很快调试完毕上线,上了生产,发现无论怎么都取不到数据。联系了办事通技术人员,打印了http请求头header,说请求头得有Referer,以前只是知道有这么个东西,但不知道具体有什么用,今天就简单说说。

加了这么一句话,请求OK了。那么,Referer是什么东西?

Referer是HTTP请求Header的一部分,当浏览器向Web服务器发送请求的时候,请求头信息一般需要包含Referer。该Referer会告诉服务器我是从哪个页面链接过来的,服务器基此可以获得一些信息用于处理。

Referer作用是什么?

1)防盗链

比如办事通服务器只允许网站访问自己的静态资源,那服务器每次都需要判断Referer的值是否是,如果是就继续访问,不是就拦截。

2)防止恶意请求

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

空Referer是怎么回事?

空Referer是指Referer头部的内容为空,或者,一个HTTP 请求头中根本不包含Referer,那么什么时候HTTP请求会不包含Referer字段呢?

根据Referer的定义,它的作用是指示一个请求是从哪里链接过来,那么当一个请求并不是由链接触发产生的,那么自然也就不需要指定这个请求的链接来源。

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

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

允许Referer为空,意味着你允许比如浏览器直接访问,就是空。

页面添加Referer元素需要使用meta referrer标签:

补充说明: Referer的正确英语拼法是 referrer 。由于早期HTTP规范的拼写错误,为了保持向后兼容就将错就错了。其它网络技术的规范企图修正此问题,使用正确拼法,所以目前拼法不统一,还有它个字母是大写。

获取请求头中的referer属性有什么用

简言之,HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器籍此可以获得一些信息用于处理。比如从我主页上链接到一个朋友那里,他的服务器就能够从HTTP Referer中统计出每天有多少用户点击我主页上的链接访问他的网站。 Referer其实应该是英文单词Referrer,不过拼错的人太多了,所以编写标准的人也就将错就错了。 Request.ServerVariables("HTTP_REFERER")的用法(防外连接) 下列情况是从浏览器的地址栏正常取得Request.ServerVariables("HTTP_REFERER"): 1) 直接用 2) 用Submit或提交的表单(POST或GET) 3) 使用JAvaScript提交的表单(POST或GET) 下面我们再看看Request.ServerVariables("HTTP_REFERER")不能正常取值的情况: 1) 从收藏夹链接 2) 单击主页或自定义的地址 3) 在浏览器中直接输地址 4) 使用JaScript的Location.href或者是Location.replace() 5) <%Response.Redirect%> 6) <%Response.AddHeader%>或者是转向 7) 用XML加载地址 防外链代码例子(C#): if (Request.ServerVariables["HTTP_REFERER"] == null || !Request.ServerVariables["HTTP_REFERER"].ToString().Contains(Request.ServerVariables["HTTP_HOST"].ToString())) { Server.Transfer("Error.aspx"); } =========================================================== 下列情况是从浏览器的地址栏正常取得Request.ServerVariables("HTTP_REFERER")的: 1.直接用 2.用Submit或提交的表单(POST or GET) 3.使用Jscript提交的表单(POST or GET) 下面我们再看看Request.ServerVariables("HTTP_REFERER")不能正常取值的情况: 1.从收藏夹链接 2.单击'主页'或者自定义的地址 3.利用Jscript的location.href or location.replace() 4.在浏览器直接输入地址 5.<%Response.Redirect%> 6.<%Response.AddHeader%>或转向 7.用XML加载地址 显然,Request.ServerVariables("HTTP_REFERER")在多数情况下是不能正常工作的,下面我们看一个例子: ref.asp <% response.write "You came from: " & request.servervariables("http_referer") %> ref.htm <% Response.AddHeader "Refresh", "10;URL=ref.asp" %>

看看上面的代码会得到什么的结果.

直接链接

Jascript location

Jascript replace

jascript GET

jascript POST Request.ServerVariables(HTTP_REFERER)的工作方式 在JSP中获取REFERER的方式是:request.getHeader("REFERER"); 在PHP中获取REFERER的方式是:$_SERVER['HTTP_REFERER'];

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至836084111@qq.com 举报,一经查实,本站将立刻删除。

联系我们

工作日:9:30-18:30,节假日休息