假设xhr请求一个a地址
a通过302 跳转到b地址
b再通过302跳转到c地址
c再返回200
请问下,能在js客户端代码层面跟踪到c地址吗?
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);
});
}
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
没办法,AJAX 请求对于 JS 来说是黑盒的,你只能去调用,并不能知道内部发生了什么。
如果是
XMLHttpRequest
,没招。如果是
fetch
,可以在发请求的时候把redirect
参数指定为manual
,这样可以捕捉到 302 响应。但只能知道发生了 302(即可以拿到 HTTP 状态码),但拿不到响应标头或正文(重定向地址就是Location
标头)。