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

小歆8年前软件源码03891

问题场景

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

相关文章

VB自删除模块源码

运行后能够删除自己。 提示:不要在VB的IDE下运行,否则会删除VB6.exe。一定要编译后运行。 下载地址:VB自删除源码.rar 部分源码: Pri...

[C语言]用9行代码干掉Windows XP,2000

微软一直声称Windows XP多么多么稳定可靠,但日前一位名为Masaru Tsuchiyama(留在程序下方,所以应该是他的昵称)外国编程爱好者刊出了一小段C语言代码。这一只有9行的小程序如...

VB操作INI文件方案

VB读写ini文件(1) 自从注册表诞生以来ini文件正在逐渐失去其市场占有率,然而基于ini文件的独立性,致使其还没有到达退出历史舞台的地步,很多应用程序的初始化和一些界面参数的设置仍然很愿意...

VB模拟POST网页上传文件模块【无控件】

VB模拟POST网页上传文件模块【无控件】

介绍 已经集成mod模块,使用的时候直接调用FileUpload函数就可以了。程序是使用抓包软件将上传过程截取下来,通过post模拟上传头数据,再把文件转换为二进制上传到网站上的。...

C语言深度解剖 封面.jpg

[PDF]C语言深度解剖

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

vb中Msgbox函数的用法

VB中的Msgbox函数,可实现弹出窗口 作用:在对话框中显示消息,等待用户单击按钮,并返回一个 Integer 告诉用户单击哪一个按钮。 语法: MsgBox...

发表评论    

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