作为对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-code
, location-header
),但不确定。