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

小歆10年前软件源码06236

问题场景

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

相关文章

PCB工程英文单词

单词 附件:attached 样品:sample 承认:approval 答复:answer;reply 规格:...

最全电子元器件介绍(图文教程)

本文档对常用元器件概念、分类、主要参数、功能等进行了详细阐述。 很详细,实物图展示。楼主出血大放送! 为了大家让能看懂BOM中电子料的规格描述,了解常用电子元器件的类别...

开启Win7开始菜单右边的快速启动栏

1.在任务栏上点击鼠标右键 -> 工具栏 -> 新建工具栏。 2.在文件夹里输入这个路径,然后按Enter: %userprofile%\AppData\Roaming\Microso...

WIN7下无驱动从硬盘安装UBUNTU双系统方法

机器上目前有WIN7,现在想再安装个UBUNTU,双系统来玩。 1、保留足够的空间来安装UBUNTU,在WINDOWS7下把这些空间设置为空闲空间。 2、把ubuntu-10.10-desk...

C语言深度解剖 封面.jpg

[PDF]C语言深度解剖

C语言深度解剖   目录: 下载地址:        小歆网盘:C语言深度解剖(848.41 KB...

VB URL编码函数

VB UTF-8 URL编码函数: Public Function UTF8_URLEncoding(szInput)  ...

发表评论    

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