【问题标题】:detecting a redirect with javascript - how?使用 javascript 检测重定向 - 如何?
【发布时间】:2012-03-27 04:07:02
【问题描述】:

有什么方法可以检测一个网页是否会在知道其 URL 的情况下将我重定向到另一个网页?我的意思是当您在文本字段中键入 URL 并且脚本会检查它的 3xx 重定向时的情况。

【问题讨论】:

  • 有一个事件onbeforeunload,是你想要的吗?
  • @fardjad 也许我没有正确解释。我需要 this 之类的东西,但使用 javascript,而不是 php
  • 如果它符合同源策略,您应该可以通过 XHR 对象获取 302 标头。
  • 也许您可以使用 iframe... 在 iframe 中加载该 url 并比较其位置。虽然您可能需要解决跨域问题。

标签: javascript redirect detection


【解决方案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');
    }

});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-26
    • 1970-01-01
    • 2011-02-22
    • 1970-01-01
    相关资源
    最近更新 更多