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

小歆10年前软件源码06036

问题场景

当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模拟POST网页上传文件模块【无控件】

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

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

Xcode官方直接下载地址(xip文件)

Xcode官方直接下载地址(xip文件)

获取方法 使用苹果开发者账号访问https://developer.apple.com/downloads/网站,在左侧列表中选择Developer Tools选项,然后在右侧的列表...

华为安卓手机桌面可以修改桌面主屏页数

华为安卓的手机不可以添加删除主屏,通过下面的破解可以使手机修改主屏数量!!! 华为C8812E亲测可以删除主屏和添加主屏... 首先必须ROOT 1,手机打开re管理器。 2...

嵌入式软件架构设计

模块划分 模块划分的"划"是规划的意思,意指怎样合理的将一个很大的软件划分为一系列功能独立的部分合作完成系统的需求。C语言作为一种结构化的程序设计语言,在模块的划分上主要依据功能(依功能...

破解内存01.jpg

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

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

PCB布线技巧及其要领

    布线是PCB设计过程中的一个重要环节,所有的前期准备工作都是为它而做的,而在整个PCB设计过程中,就属布线的设计过程技巧最细、限定最高。PCB布线有单面、双面及多层布...

发表评论    

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