实施 HTTP 到 HTTPS 重定向,保留 Google Analytics(分析)引荐来源网址

Posted

技术标签:

【中文标题】实施 HTTP 到 HTTPS 重定向,保留 Google Analytics(分析)引荐来源网址【英文标题】:Implement HTTP to HTTPs redirect preserving Google Analytics referrer 【发布时间】:2017-10-10 12:58:53 【问题描述】:

Google Analytics 显示可疑数量的 (direct)/(none) 作为我网站的来源。我知道当一个 HTTP 网站从一个 HTTPs 网站链接时,引荐来源信息会丢失。

就我而言,我有一个安全网站 https://example.com,我使用以下 Apache 设置转发用户,以防他们尝试访问非安全版本:

RewriteEngine On 
RewriteCond %SERVER_PORT 80 
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]
RewriteRule ^([^\.]+)$ $1.html [NC,L]

当然,我无法控制外部(安全)网站是通过 http 还是 https 链接我。

现在我的问题是:

为什么从 https 到 http 的引用信息会丢失? 如果外部网站将我链接为 http://example.com,这会在分析中显示为直接吗? 有没有办法将用户重定向到安全网站,同时保留引荐来源网址

【问题讨论】:

【参考方案1】:

这是由于security:

由于链接的来源可能是私人信息或可能会泄露其他私人信息源,因此强烈建议用户能够选择是否发送Referer字段。例如,浏览器客户端可以有一个用于公开/匿名浏览的切换开关,分别启用/禁用Referer和From信息的发送。

如果引用页面是使用安全协议传输的,则客户端不应在(非安全)HTTP 请求中包含 Referer 标头字段。

使用 HTTP 协议的服务的作者不应该使用基于 GET 的表单来提交敏感数据,因为这会导致该数据被编码到 Request-URI 中。许多现有的服务器、代理和用户代理会将请求 URI 记录在第三方可能看到的某个地方。服务器可以改用基于 POST 的表单提交

这种行为更好explained here:

在 HTTP 和 HTTPS 之间切换时,HTTP 规范规定不应发送引用标头(请参阅 RFC2616 中的 15.1.3)。然而,规范并没有说明 HTTPS 页面之间应该发生什么。


您的问题之前已在 *** 上得到解决。见this one。

一些修复建议

1) 对于某些浏览器,您可以简单地向您的页面添加一个新的元标记:<meta name="referrer" content="always"><meta name="referrer" content="origin">。了解有关此meta 的更多信息。浏览器支持的差异可以是found here。

2) 您可以使用中间页面来跟踪引荐来源网址存在时的综合浏览量 (http):http://page.com/reditect?url=https://page.com/finalpage.htm 其中 /redirect 将调用 Analytics 以跟踪包含引荐来源网址的 finalpage.htm,然后再重定向到那里。见full explanation。

3) 您可以在 301 重定向上添加一个参数,并使用 ga('set', 'referrer', 'http://example.com'); 覆盖引荐来源信息。见full explanation。这可以结合上一点,避免在中间页面上进行跟踪,而是收集referrer的数据。

【讨论】:

就像垃圾邮件一样,但这些选项是解决此问题的最佳方法。 Number 1) 需要在原始网站中设置元标记,不是吗?所以这不是一个真正可行的解决方案 然后,尝试 2 ;) 我能想到的唯一不好的方面是反弹率可能会下降一点,因为您跟踪重定向上的综合浏览量(获取referrer 到某个登陆),然后一次重定向。我想你需要在某个时候做出取舍。

以上是关于实施 HTTP 到 HTTPS 重定向,保留 Google Analytics(分析)引荐来源网址的主要内容,如果未能解决你的问题,请参考以下文章

HAProxy 将 http 重定向到 https (ssl)

如何将 HTTPS 重定向到 HTTP?

重定向到网站的 https 版本?

重定向到其他端口,保留所有其他端口

301重定向时nginx保留端口号

IIS 重定向是不是保留 QueryString?