referrer参数丢失问题

想在网站中获取访问站点来源的方式,前端使用 `document.referrer`,想着这样就能知道是从百度推广来的还是从百度自然搜索来的。推广又是通过哪个关键词来的。

想获取到的地址是完整的,如下:

https://test.com?from=xxxx&keyword=bbbb

但我通过自己的服务器进行跳转测试时,发前端获取referrer时只能获取到域名不能获取到后面的参数。只能获取域名,如下:

https://test.com/

后来查资料说:

Chrome85 的 referer 策略修改
原本默认的 referer 策略(policy)是no-referrer-when-downgrade,即允许referer带上来源页面地址上的请求参数,Chrome85+将策略修改为strict-origin-when-cross-origin,即如果请求地址与请求页面非同源,将只携带请求的域名,不会再带上来源页面地址的请求参数。

 解决方式是需要在来源页面来源服务器做处理:

方法一:来源页面中加代码

<metaname="referrer"content="no-referrer-when-downgrade"/>

方法二:来源页面nginx加代码

add_header Referrer-Policy no-referrer-when-downgrade;

那完了,我们想统计百度哪个关键词来的,只能在百度服务器上设置了?

后来试了一下,百度好像已经设置了,可以获取。先这样吧。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Referrer Policy(引用者策略)是一个HTTP头部,它控制浏览器在发送请求时是否包含Referer(引用者)头部信息,该头部信息包含了当前页面的URL地址。Referrer Policy可以用来保护用户的隐私,因为通过Referer头部信息,网站可以获取到用户访问来源的信息,包括用户的浏览历史、搜索关键字等。 Referrer Policy有以下几个取值: - no-referrer:不发送Referer头部信息。 - no-referrer-when-downgrade:默认值,对于HTTPS请求,不发送Referer头部信息;对于HTTP请求,发送完整的URL地址作为Referer头部信息。 - same-origin:只在请求和当前页面同源的情况下发送Referer头部信息。 - origin:只发送当前页面的来源地址(协议、域名、端口)作为Referer头部信息。 - strict-origin:只在请求和当前页面同源的情况下发送Referer头部信息,并且不包含路径信息。 - origin-when-cross-origin:对于同源请求,只发送当前页面的来源地址作为Referer头部信息;对于跨域请求,发送完整的URL地址作为Referer头部信息。 - strict-origin-when-cross-origin:对于同源请求,只发送当前页面的来源地址作为Referer头部信息;对于跨域请求,只发送当前页面的来源地址(协议、域名、端口)作为Referer头部信息,并且不包含路径信息。 可以在HTTP响应头部中添加Referrer-Policy头部信息来设置引用者策略,例如: ``` Referrer-Policy: no-referrer ``` 以上代码设置了引用者策略为no-referrer,表示浏览器在发送请求时不会发送Referer头部信息。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值