js能跟踪到302跳转后的地址吗?

假设xhr请求一个a地址
a通过302 跳转到b地址
b再通过302跳转到c地址
c再返回200

请问下,能在js客户端代码层面跟踪到c地址吗?

阅读 5.1k
2 个回答

没办法,AJAX 请求对于 JS 来说是黑盒的,你只能去调用,并不能知道内部发生了什么。


如果是 XMLHttpRequest,没招。

如果是 fetch,可以在发请求的时候把 redirect 参数指定为 manual,这样可以捕捉到 302 响应。但只能知道发生了 302(即可以拿到 HTTP 状态码),但拿不到响应标头或正文(重定向地址就是 Location 标头)。

新手上路,请多包涵

xhr.responseURL 可以拿到

export default function getLocationFromRedirect(
  originUrl: string,
  method = "GET"
) {
  return new Promise<string>((resolve, reject) => {
    const xhr = new XMLHttpRequest();
    xhr.open(method, originUrl, true);
    xhr.onload = function () {
      resolve(xhr.responseURL);
    };
    xhr.onerror = reject;
    xhr.send(null);
  });
}
推荐问题