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

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

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

阅读 4.9k
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);
  });
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题