请选择 进入手机版 | 继续访问电脑版
快捷导航
聚牛山庄
登录 注册
搜索
查看: 1001|回复: 0

[问题解决笔记] 从Https跳转到Http时不传递HTTP_REFERER导致无法获取来路的解决方案

[复制链接]

174

主题

392

帖子

4

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4
发表于 2019-2-13 18:55:55 | 显示全部楼层 |阅读模式
使用百度统计、51统计等网站统计工具时,发现有些https的来路无法正常统计到。
网上搜了一下才发现原因。

问题场景当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才是未来。




参考文档:https://www.jianshu.com/p/233e460e4196




回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|聚牛山庄
GMT+8, 2019-9-23 00:29 , Processed in 0.118768 second(s), 38 queries .
信息产业部备案/许可证编号:( 湘ICP备18017617号 )  © 2018-2027   Powered by Discuz!
快速回复 返回顶部 返回列表