如果通过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重定向页面。因此,重定向上没有引荐来源网址。
#1 楼
如前所述,此答案有一种新的执行方法:引荐来源网址政策/元标记。请参阅本问与答中的规范和示例。
#2 楼
我也有同样的问题。我可以通过添加如下所示的元标记来解决,该标记只能在Chrome和Safari中使用。<meta name="Referrer" content="origin">
#3 楼
遗憾的是,您无法在HTTPS上引用使用HTTP的站点。但是,您可以执行HTTPS到HTTPS或HTTP到HTTPS的操作。源(SOURCE)
如果引用页面是通过一个或多个域名传输的,则客户端不应该在(非安全)HTTP请求中包含引用头字段。安全
协议。
一种解决方法是使用内部重定向脚本,而不是将链接重定向到您重定向到HTTP的HTTPS上的访问者,然后重定向
例如:
<a href="http://www.yours.com/out.php?www.other.com">www.outboundsite.com</a>
,但这不会使用原始的引荐来源网址。另一种可能性是使用引用引用而不是引荐来源网址和据我所知,这在HTTPS中有效。
评论
我的测试表明,使用重定向不起作用(请参阅更新)。
–胡桃夹子
13年4月18日在1:14
使用引用或丢失HTTPS;)
–西蒙·海特(Simon Hayter)♦
13年4月18日在11:00
@bybe,此答案需要编辑。请参阅serverfault.com/a/520603/87017和webmasters.stackexchange.com/a/71331/7654
–起搏器
2015年4月15日在5:46
#4 楼
我能够建立从HTTPS页面到另一个域上的HTTP页面的链接,并仍然使用以下技术将第一页的URL作为引荐来源传递。定义
原始页面:HTTPS页面,指向HTTP托管目标页面的链接位于该页面。在此示例中:
https://example1.com/origin.html
目标页面:HTTP页面,可以访问原始页面的引荐来源网址。在此示例中:
http://example2.com/destination.html
基本计划
这具有使重定向来自原始页面的HTTP版本的效果:
HTTPS原始页面上的链接链接到当前页面,但为目标页面添加了一个查询参数[1]。例如:
https://example1.com/origin.html?goto=http://example2.com/destination.html
单击链接时,出现查询参数'goto'时,example1.com上的服务器中断标准请求。然后,它:
将'goto'参数存储在'goto'cookie中。
从当前请求的url中删除'goto'参数和值
302重定向到原始域的HTTP版本上的这个新的已清理的url,即。
http://example1.com/origin.html
服务器检查每个请求的“ goto” cookie,如果存在,将清除该cookie,然后呈现一个非常简单的重定向页面。该页面包含[2]:
一个Javascript window.location.replace()脚本,该脚本重定向到goto cookie url。
带有值的Meta Refresh标签。 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} [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} [L,QSA,R=301]
disable_ssl cookie将在步骤2中设置,然后在步骤3中删除。
评论
好的....但是这并没有完全传递“引荐来源标头”。
–起搏器
15年4月15日在5:44
#5 楼
根据HTTP 1.1协议http://www.w3.org/Protocols/rfc2616/rfc2616-sec15.html#sec15.1.3客户端不应在(非安全的) )HTTP请求(如果引用页面是通过安全的
转移的)
评论
我为什么不呢
–马丁(Martijn)
2014年8月22日上午10:36
#6 楼
看起来无法实现所需的解决方案,因此可能的解决方法是:如果目标网站使用的是Google Analytics(分析)(或兼容的程序,我相信Piwik使用类似的语法,而其他统计信息包可能会愚蠢地忽略了这一点),则可以发送跟踪参数,例如,在指向example.com的链接中http://www.example.com/?utm_campaign=spring&utm_medium=referral&utm_source=exampleblog
这将在详细信息中显示出来,并确保选择其他人不太可能使用的值,这样您就不必强迫它们发生冲突/或隐藏流量在其他人的后面
Google在此处http://support.google.com/analytics/answer/1033867?hl=zh_CN
更新-礼节
在不了解流量本质的情况下,我只能说一般/个人话...
礼节总是在情人眼中。没有这个,我认为至少在Google Analytics(分析)中,它可能会直接展示出来,或者(可能没有)展示出来,从而歪曲他们的形象,使他们看起来自己的品牌比现在更大。就我个人而言,我希望选择一个经过精心挑选的广告系列,这样我才能知道流量来自何处。
您也可以将其视为,如果您几乎不向他们发送任何流量,那么他们可能不会注意到,如果您发送给他们很多,那么他们可能不会抱怨!如果他们这样做了,那么通常您可以找到其他人来免费提供流量!
如果您非常有针对性,那应该不会造成问题。广告系列作为您网站的名称,来源作为您网站的板块?
http://www.example.com/?utm_campaign=mygreatsite.com&utm_medium=referral&utm_source=specialoffers
评论
好主意!我曾考虑过这种解决方法,但想知道他们是否是从我最终开始实施该方法的一些“规则”。通常,这些查询参数是由第三方网站添加的,因此它们可以跟踪其广告系列等。以任何方式都将这种方法视为不良做法吗?
–胡桃夹子
13年4月18日在13:53
评论
Origin应该是完整的,但是可能不适合您的用例。