作为对XHR请求的响应返回redirect

如果浏览器接收到ajax请求的redirect响应,会发生什么?

如果浏览器接收到ajax请求的redirect响应,会发生什么?

如果服务器发送一个redirect(又名302响应加一个Location:头),浏览器自动跟随redirect。 对第二个请求的响应(假设它也不是另一个redirect)是暴露给你的程序的东西。

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

这既是我的经验,也是我在规范中所说的行为 。

2016更新:时间已经过去了,好消息是新的fetch()API可以提供更好的控制redirect的方式 ,默认行为类似于XHR。 也就是说,它只适用于本地实现fetch()的地方。 基于XHR的 fetch()的 polyfill版本继续存在XHR的局限性 。 幸运的是, 原生浏览器支持似乎很好。

ajax-request将遵循redirectafaik。 实际内容( .responseText.responseXML )将是您被redirect到的页面中的内容。

您可能能够拦截readyState 2或3上的redirect( status-codelocation-header ),但不确定。