https页面内http链接跳转时的referer问题

一、问题

最近做项目,出现这样个问题,从合作方页面,通过链接跳转我们页面时,referer信息突然获取不到了。

两边代码都没有变更,很奇怪?

二、原因

通过查找,最终发现,原来合作方页面升级为https,而跳转到我方页面的链接为http。简单说,就是https页面内的

http链接。在这种情况下,referer信息是没有的,不会传递。

三、进一步原因

进一步查找,发现在RFC文档(https://www.w3.org/Protocols/rfc2616/rfc2616-sec15.html#sec15.1.3)内有这

样一段话:

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(同时站点也需支持https)

方法二:https页面添加meta元数据 ,这样强制添加referer信息

备注:方法二中meta元数据中的name值,还可为:

no-referrer:即不添加referer信息;

origin:即referer信息只有schema://domain:port,即协议://域名:端口,没有路径信息;

no-referrer-when-downgrade:当协议降级时,不发送referer信息,也就是本文描述的问题,

现大多数浏览器默认的;

origin-when-crossorigin:当跨域时,origin类型的referer,即只有协议://域名:端口,没有路径信息;

unsafe-url:始终发送referer信息。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值