从Https跳转到Http时不传递HTTP_REFERER的解决方案

小歆10年前软件源码06049

问题场景

当http页面通过Referer获取上一个页面的URL时,如果上一个页面是https,则得到的Referer为空。

例如在http页面的PHP代码中使用:$_SERVER['HTTP_REFERER']

得到的结果是:NULL

原因

根据RFC文档:HTTP/1.1: Security Considerations

Clients SHOULD NOT include a Referer header field in a (non-secure) HTTP request if the referring page was transferred with a secure protocol.

在Https -> Http的过程中Referer是不被传递的,而在 Https -> Https 或 Http -> Https 则没有这样的问题。

解决方案

1、Https端解决方案

增加一个Meta头信息,来建议浏览器发送Referer,这并不是HTTP强制要求的,不排除有个别浏览器不去这么做。

<meta content="always" name="referrer">

2、Http端解决方案

只用将全站升级成Https,否则没有办法。

总结

总的来说出现这个问题是HTTP安全性的结果,可以防止Https页面信息以明文暴露出来。综合考虑增加Meta只能作为临时方案(因为牺牲了安全性),长远打算还是将全站升级成Https吧,毕竟Https才是未来。

相关文章

【详解】VB6.0下用MSComm控件实现串口通信

VB6.0 下用 MSComm 控件实现串口通信 MSComm 控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能 下...

用VB快速读取TextBox第N行的数据

TextBox 是以 vbCr+vbLf 为分行符号, 如果我们要逐一读取 TextBox 每一行, 无非是寻找 vbCr+vbLf 的所在位置, 然后取出每一行的字串, 不过这个方法不快,而且...

vb导出其他文件资源

vb导出其他文件资源 Dim TempData() As Byte TempDataPath = "C:\...

P89V51.jpg

单片机P89V51中文数据手册

单片机P89V51中文数据手册 【高清无水印版】   下载地址:P89V51中文手册.pdf...

★主板维修精华★

1. BIOS作用:BIOS是开机初始化,检测系统安装设备类型,数量等。 2. RESET的产生过程:PG→(门电路,南桥)→RESET复位(ISA槽B2脚,P...

PCB设计的几点经验总结

第一:前期准备。这包括准备元件库和原理图。“工欲善其事,必先利其器”,要做出一块好的板子,除了要设计好原理之外,还要画得好。在进行PCB设计之前,首先要准备好原理图SCH的元件库和PCB的元件...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。