http-equiv="refresh" 是不是保留推荐人信息和元数据?
Posted
技术标签:
【中文标题】http-equiv="refresh" 是不是保留推荐人信息和元数据?【英文标题】:Does http-equiv="refresh" keep referrer info and metadata?http-equiv="refresh" 是否保留推荐人信息和元数据? 【发布时间】:2011-02-28 11:01:01 【问题描述】:如果我这样设置页面:
<html><head><meta http-equiv="refresh" content="0;url=http://internic.net/"></head><body></body></html>
执行重定向时浏览器会发送referrer信息和其他元数据吗?
【问题讨论】:
好问题 - 我的猜测是“不”。这是一个新的、单独的请求。 【参考方案1】:在这里进行测试时,Firefox 和 IE 不,但 Chrome 确实发送引荐来源网址(尽管这也不一致),无论它是否会发送到同一个域或不。
鉴于我找不到任何说明应该是标准行为的规范,而且 W3C 通常不鼓励 META 重定向,我不确定您是否可以依赖此保持一致。
【讨论】:
您链接到的页面显示“奇怪的是,IE 处理 javascript 和元刷新的方式与 FireFox 或 Safari 略有不同。Internet Explorer 在访问目标站点时会将 REFERER 设为空,而 FireFox并且 Safari 会将 REFERER 设置为带有 javascript 或元刷新代码的 URL。”从那以后有变化吗? @Waterfox - 我在本地和 URL 上进行测试,在每种情况下,chrome 和 Firefox 都没有通过引用标头,我在外部站点上还有一个测试要运行,我会在它之后再次发表评论。 @Waterfox - 我在远程域上进行了测试,并且 chrome is 通过了推荐人,这意味着它不像我想的那样一致......所以你不能真正依赖这看起来像这样或那样。我假设 Safari 在这方面表现得像 Chrome,但我没有它可以测试。 推荐的重定向类型是什么?其实我不希望通过referrer。 @Waterfox - 您可以通过 POST 等方式定向到您拥有的页面,然后让它重定向到您要去的地方......所有另一端都会看到您的redirect.whatever
页面,所以没什么用...这是向广告商等隐藏数据的常用方法。preferred 方法是 301/302 Http 状态重定向,但这些不会隐藏引荐来源网址。跨度>
【参考方案2】:
我对此做了一些额外的测试。我涉及三个 URI(都在同一个域上):
/page.html
有一个元刷新链接
/refresh.html
使用元刷新到目的地
/destination.html
使用 JavaScript 将引荐来源网址写入页面。
我通过打开page.html
并单击链接在多个浏览器中运行了测试,然后观察目标上的引荐来源网址是什么。结果如下:
http://example.com/refresh.html
Safari - 推荐人:http://example.com/refresh.html
Opera - 推荐人:http://example.com/refresh.html
没有一个浏览器像使用 301 或 302 重定向那样将 http://example.com/page.html
显示为引荐来源网址。所以元刷新在一定程度上可以用来掩盖引用者:
【讨论】:
【参考方案3】:确实,可以通过简单地使用表单来欺骗 Firefox 和 Internet Explorer,获得相同的重定向结果,使用 preserved referrer延迟提交。
示例:
<form action="URL" method="GET" name="redirected"></form>
<script>
setTimeout(function()
document.forms.redirected.submit();
, 1000);
</script>
【讨论】:
这是实际答案 值得注意的是,使用这种类型的重定向可能会在 Google Chrome 中导致恼人的警告“您要提交的信息不安全”。不过对于安全托管的网站应该没问题。以上是关于http-equiv="refresh" 是不是保留推荐人信息和元数据?的主要内容,如果未能解决你的问题,请参考以下文章
META http-equiv="refresh" 实现网页自动跳转