如何将引荐来源标头从我的https域传递到http域?


12

我的网站是100%https。我有其他http域的链接。从https页面链接到http页面时,未设置引荐来源标头。来自http://en.wikipedia.org/wiki/HTTP_referrer

如果从HTTP安全(HTTPS)连接访问网站,并且链接指向除其他安全位置以外的任何其他位置,则不会发送引用字段。

我希望其他域可以看到引荐来源网址,以便他们知道流量来自我的域。有没有办法强制使用此标头,或者还有其他解决方案?

更新资料

我已经使用重定向完成了一些基本测试:

http page  -- link to http  --> 301 redirect --> http page = referrer intact
https page -- link to https --> 301 redirect --> http page = referrer blank
https page -- link to http  --> 301 redirect --> http page = referrer blank
https page -- link to http  --> 302 redirect --> http page = referrer blank

从我自己的域上的https页面链接到http重定向页面时,引荐来源网址丢失。因此,重定向上没有引荐来源网址。


Origin应该是完整的,但可能不适合你的使用情况。
和平者

Answers:



8

我也有同样的问题。我可以通过添加如下所示的元标记来解决,并且该标记只能在Chrome和Safari中使用。

<meta name="Referrer" content="origin">

6

遗憾的是,您无法在HTTPS上引用使用HTTP的站点。但是,您可以执行HTTPS到HTTPS或HTTP到HTTPS的操作。

资源

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

解决方法是使用内部重定向脚本,而不是将链接重定向到您重定向到HTTP的HTTPS上的访问者,然后重定向出去。

例如:

<a href="http://www.yours.com/out.php?www.other.com">www.outboundsite.com</a> 但这不会使用原始引荐来源网址。

据我所知,另一种可能性是使用引用而不是引用,并且据我所知这在HTTPS中有效。


我的测试表明,使用重定向不起作用(请参阅更新)。
胡桃夹子

使用引用或丢失HTTPS;)
Simon Hayter


4

我能够建立从HTTPS页面到另一个域上的HTTP页面的链接,并且仍然使用以下技术将第一页的URL作为引荐来源传递。

定义

原始页面:HTTPS页面,指向HTTP托管目标页面的链接位于该页面。在此示例中:https://example1.com/origin.html

目标页面:HTTP页面,可以访问原始页面的引荐来源网址。在此示例中:http://example2.com/destination.html

基本计划

这具有使重定向来自原始页面的HTTP版本的效果:

  1. HTTPS原始页面上的链接链接到当前页面,但为目标页面添加查询参数[1]。例如:https://example1.com/origin.html?goto=http://example2.com/destination.html

  2. 单击链接后,如果存在查询参数“ goto”,example1.com上的服务器就会中断标准请求。然后:

    • 将“ goto”参数存储在“ goto” cookie中。
    • 从当前请求的网址中删除“ goto”参数和值
    • 302重定向到原始域的HTTP版本上的此新清除的url,即。 http://example1.com/origin.html
  3. 服务器检查每个请求的“ goto” cookie,如果存在,将清除该cookie,然后呈现一个非常简单的重定向页面。该页面包含[2]:

    • 一个Javascript window.location.replace()脚本,该脚本重定向到goto cookie url。
    • 具有goto cookie url值和延迟几秒钟的元刷新标签。
    • 转到goto cookie URL的链接。

笔记

[1]此基本解决方案是一个开放式重定向器,应考虑使用goto查询参数对网络钓鱼攻击中的UA进行重定向,以防止恶意分子入侵。

[2]当通过JS重定向或元刷新标记进行重定向时,并非所有浏览器都会发送引荐来源网址。在我的测试中,IE8及更低版本未通过引荐来源网址。

我不确定这种技术是否会让搜索引擎抓取工具跟踪链接。这对我的要求并不重要。

如果UA禁用了Cookie,则它将再次重定向到原始页面。

允许HTTP连接仅用于重定向

在我的服务器上,无论请求如何,我都有一个执行HTTPS的Apache规则:

<VirtualHost *:80>
    ServerName example1.com

    # if not on port 443 then 301 redirect to https while keeping any query string
    RewriteEngine              On
    RewriteCond %{HTTP_HOST}  ^example1\.com$ [NC]
    RewriteCond     %{SERVER_PORT} !443
    RewriteRule     ^(.*)$     https://%{HTTP_HOST}$1 [L,QSA,R=301]

为了使上面的重定向技术起作用,我需要某种方式来有条件地允许HTTP连接。有很多方法可以做到这一点。我决定使用cookie。

<VirtualHost *:80>
    ServerName example1.com

    # if not on port 443 then 301 redirect to https while keeping any query string
    RewriteEngine              On
    RewriteCond %{HTTP_HOST}  ^example1\.com$ [NC]
    RewriteCond     %{SERVER_PORT} !443
    RewriteCond %{HTTP_COOKIE}  !disable_ssl [NC]
    RewriteRule     ^(.*)$     https://%{HTTP_HOST}$1 [L,QSA,R=301]

disable_ssl cookie将在步骤2中设置,然后在步骤3中删除。


好的...。但这并没有完全传递“引荐来源标头 ”。
Pacerier,2015年


0

似乎无法实现您想要的结果,因此可能的解决方法是:如果目标站点使用的是Google Analytics(分析)(或兼容的程序,我相信Piwik使用类似的语法,而其他统计信息包可能会愚蠢地忽略了这一点),则可以发送跟踪参数,例如,在指向example.com的链接中

http://www.example.com/?utm_campaign=spring&utm_medium=referral&utm_source=exampleblog

这将在详细信息中显示在他们的GA中,请确保选择其他人不太可能使用的值,这样您就不必强迫它们发生冲突/或将流量隐藏在其他人的后面

Google在这里http://support.google.com/analytics/answer/1033867?hl=zh_CN做一个方便的网址生成器

更新-re:礼节

在不了解流量性质的情况下,我只能说一般/个人...

礼节总是在情人眼中。没有这个,我认为至少在Google Analytics(分析)中,它可能会直接显示出来,或者(可能没有)显示出来,从而歪曲他们的形象,使他们看起来自己的品牌比现在更大。就我个人而言,我希望选择一个精心挑选的广告系列,这样我就知道流量来自何处。

您也可以将其视为,如果您几乎不向他们发送任何流量,他们可能不会注意到,如果您发送给他们很多,那么他们可能不会抱怨!如果他们这样做,那么通常您可以找到其他人以提供免费流量!

如果您非常具体,则不会引起任何问题;广告系列作为您网站的名称,来源作为您网站的板块?

http://www.example.com/?utm_campaign=mygreatsite.com&utm_medium=referral&utm_source=specialoffers

好主意!我曾考虑过这种解决方法,但想知道他们是否是从我最终开始实施该方法的一些“规则”。通常,这些查询参数是由第三方网站添加的,因此它们可以跟踪其广告系列等。以任何方式都将这种方法视为不良做法吗?
胡桃夹子
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.