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

小歆10年前软件源码06110

问题场景

当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才是未来。

相关文章

线宽与电流关系.png

PCB线宽与承载电流的计算

一般情况可以采用经验公式计算:0.15×线宽(W)=A 以上数据均为温度在25℃下的线路电流承载值. 导线阻抗:0.0005×L/W(线长/线宽) 电流承载值与线路上元器件数量/焊...

VB格式输出函数Format的使用

VB格式输出函数可以使数值、日期或字符串按指定的格式输出。其格式为: Format(<表达式>[, <格式字符串>])...

555集成电路应用800例.jpg

555集成电路应用800例(新编版)

555集成电路应用800例(新编版)        新编555集成电路应用800例电路4余例而成。本书在简要介绍时基电路5...

PCB布线要点准则

一、电路板设计步骤 一般而言,设计电路板最基本的过程可以分为三大步骤。 (1). 电路原理图的设计: 电路原理图的设计主要是PROTEL099的原理图设计系统(Advanced Schemat...

阻焊剂分类及阻焊剂配方和使用方法

阻焊层,顾名思义,就是防止焊接的一层。它一般是绿色或者其它颜色,覆盖在布有铜线上面的那层薄膜,它起绝缘,还有防止焊锡附着在不需要焊接的一些铜线上。当然,它也在一定程度上保护布线层。 &...

破解内存01.jpg

破解 Win7 32位系统的4G内存限制

ReadyFor4GB.rar 先解压附件压缩包,如图所示。   然后管理员身份运行ReadyFor4GB   依次点击“检查”,“应用...

发表评论    

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