获取 Ajax 请求地址的重定向网址

这应该是一个小众的需求,但需要用到的也不会含糊,这个事情用 jQuery 里的 ajax 办不到,只能用原生 js


需求

我们需要在一个 URL 上取原始参数,但该 URL 我们不知道,是从一个已知 URL 跳转过去的

访问地址http://xxxx.xxxxx.xx/login?id=aaaa&key=bbbb后,URL 跳转到http://yyyy.yyy.yy/index?subkey=cccccccc

编写一个方法,参数是idkey,返回值是subkey


过程

由于有 jQuery 环境,而且在我原来的观念里,原生 xhr 跟$.ajax访问后 callback 里的 xhr 参数无差别,所以首先想到的通过$.ajax来访问url,在complete参数中取xhr.responseURL,尝试失败,xhr.responseURL 为 null


解决办法

关键代码:

let url = 'http://xxxx.xxxxx.xx/login?id=aaaa&key=bbbb'
let xhr = new XMLHttpRequest()
xhr.onreadystatechange = function(e) {
  if (xhr.status == 200 && xhr.readyState == 4) {
    let ret = xhr.responseURL.match('subkey=([a-zA-Z0-9_]+)')[1]
  }
}
xhr.open("GET", url, true)
xhr.send()

至此,问题迎刃而解,后面通过Promise更好地把异步封装来用,还有http的异常捕捉,就不说了


参考

https://stackoverflow.com/questions/35532531/is-it-possible-to-get-page-redirect-information-via-ajax

若您觉得我的博文对您有帮助,欢迎点击下方按钮对我打赏
打赏