返回重定向作为对XHR请求的响应

时间:2008-11-11 22:59:13

标签: ajax http

如果浏览器收到对ajax请求的重定向响应,会发生什么?

3 个答案:

答案 0 :(得分:196)

如果浏览器收到对ajax请求的重定向响应会怎样?

如果服务器发送重定向(也称为302响应加上Location:标头),则浏览器会自动遵循重定向。对第二个请求的响应(假设它也不是另一个重定向)是您的程序所接受的。

实际上,您无法检测302响应是否已发生。如果302重定向导致200,那么您的程序就像原始请求直接导致200一样。

这既是我的体验,也是behavior called out in the spec

2016年更新:时间已过,好消息是新fetch() API规定提供finer-grained control of how redirects are handled,其默认行为与XHR类似。也就是说,它仅适用于本地实现fetch()的地方。 Polyfill versions of fetch() - 基于XHR - continue to have XHR's limitations。幸运的是,native browser support似乎很顺利。

答案 1 :(得分:7)

ajax-request将遵循该重定向afaik。实际内容(.responseText.responseXML)将是您重定向到的网页中的内容。

您可以拦截status-code 2或3上的重定向(location-headerreadyState),但不确定。

答案 2 :(得分:0)

TLDR:它可以与fetch一起使用。
此处更多信息:https://github.com/axios/axios/issues/932#issuecomment-515229573