HTTP来源地址

本页使用了标题或全文手工转换,现处于中国大陆简体模式
求闻百科,共笔求闻
BXHS-bot留言 | 贡献2023年9月8日 (五) 20:15的版本 (机器人:清理不当的来源、移除无用的模板参数)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
“HTTP来源地址”的各地常用别名
中国内地HTTP来源地址
港台HTTP参照位址

HTTP来源地址referer,或HTTP referer)是HTTP表头的一个字段,用来表示从哪儿链接到目前的网页,采用的格式是URL。换句话说,借着HTTP来源地址,目前的网页可以检查访客从哪里而来,这也常被用来对付伪造的跨网站请求。

dereferer则是将HTTP来源地址信息剥离,所以网站将无法识别访客从何而来。

拼写问题

Referer的正确英语拼法是referrer。这是早期HTTP规范当中存在的拼写错误,后来为保持向下兼容将错就错。例如DOM Level 2[1]、Referrer Policy[2]等其他网络技术的规范曾试图修正此问题,使用正确拼法,导致目前拼法并不统一。

概念与功能

当访客访问网页时,HTTP来源地址(refererreferring page)是前一个网页URL。如果是图片的话,通常指的就是图片所在的网页。在网页浏览器送往网页服务器的时候,HTTP来源地址就被包含在HTTP请求方法中。

网站会将引用地址记录以便追踪用户的动态或进行统计,大部分分析软件也都会处理这个信息。但因引用地址信息可能会带来隐私权问题,不少网页浏览器允许用户设置不要提交这个信息,有些代理服务器防火墙也会将引用地址信息过滤掉,以避免外部获知非公开的网络地址。缺少引用地址信息有可能会造成某些使用问题:某些服务器会因为缺少正确的引用地址信息而进行阻挡,以避免未经授权的图片引用(图像防盗链)或是其他对服务器有影响的行为。针对这样的阻挡,有些软件还提供了针对特定网站提交假来源地址的功能(反防盗链)。

如何获取HTTP来源地址

ASP.NET(C#
string strReferrer = Request.UrlReferrer.AbsolutePath.ToString();
string strReferrer = Request.ServerVariables("http_referrer");
string strReferrer = Request.UrlReferrer.ToString();
ASP
strReferrer = Request.ServerVariables("HTTP_REFERER").Item;
PHP
$strReferrer = $_SERVER["HTTP_REFERER"];
JAVA
strReferrer = request.getHeader("referer");
GO
strReferrer = http.Request.Referer()
Python
from flask import Flask,request
app = Flask(__name__)
@app.route("/")
def Get_Referer():
    Referer = request.headers.get("Referer")
    return Referer

参考与外部链接

  • RFC 2616: Hypertext Transfer Protocol – HTTP/1.1
  • IRI – Internationalized Resource Identifiers

参考资料

  1. Document Object Model (DOM) Level 2 CoreSpecification. W3C. [2017-07-05] (英语). 
  2. Referrer Policy. W3C. [2017-07-05] (英语).