使用 javascript 检测重定向 - 如何?
Posted
技术标签:
【中文标题】使用 javascript 检测重定向 - 如何?【英文标题】:detecting a redirect with javascript - how? 【发布时间】:2012-03-27 04:07:02 【问题描述】:有什么方法可以检测一个网页是否会在知道其 URL 的情况下将我重定向到另一个网页?我的意思是当您在文本字段中键入 URL 并且脚本会检查它的 3xx 重定向时的情况。
【问题讨论】:
有一个事件onbeforeunload
,是你想要的吗?
@fardjad 也许我没有正确解释。我需要 this 之类的东西,但使用 javascript,而不是 php
如果它符合同源策略,您应该可以通过 XHR 对象获取 302 标头。
也许您可以使用 iframe... 在 iframe 中加载该 url 并比较其位置。虽然您可能需要解决跨域问题。
【参考方案1】:
是的,您可以在 Javascript 中轻松做到这一点。它看起来像:
var xhr = new XMLHttpRequest();
xhr.onload = function()
if (this.status < 400 && this.status >= 300)
alert('this redirects to ' + this.getResponseHeader("Location"));
else
alert('doesn\'t redirect ');
xhr.open('HEAD', '/my/location', true);
xhr.send();
不幸的是,这仅适用于您自己的服务器,除非您访问设置了CORS 的服务器。如果您想在任何域中统一工作,则必须在服务器端进行。
【讨论】:
我在这里可能错了,但我认为这可能不起作用,检查您是否被重定向的唯一方法是检查 responseURL 属性 xhr.spec.whatwg.org/#the-responseurl-attribute 如果是与 open 方法中使用的 URL 不同,存在重定向【参考方案2】:这是您问题的简单解决方案。
x.addEventListener('readystatechange',function()
const url = 'https://your/request/url';
if(this.responseURL != url)
alert('redirected');
);
【讨论】:
以上是关于使用 javascript 检测重定向 - 如何?的主要内容,如果未能解决你的问题,请参考以下文章