如果浏览器收到对ajax请求的重定向响应会发生什么?
如果浏览器收到对ajax请求的重定向响应会发生什么?
如果服务器发送重定向(也称为302响应加上Location:标头),则浏览器会自动遵循重定向.对第二个请求的响应(假设它也不是另一个重定向)是您的程序所接受的.
实际上,您无法检测302响应是否已发生.如果302重定向导致200,那么您的程序的行为与原始请求直接导致200的行为完全相同.
这既是我的经验,也是规范中提到的行为.
2016年更新:时间已经过去了,好消息是新的fetch()API被指定为处理重定向的方式提供更细粒度的控制,默认行为类似于XHR.也就是说,它只适用于本机实现fetch()的地方.polyfill版本的fetch() - 基于XHR- 继续具有XHR的限制.幸运的是,本机浏览器支持似乎很好地完善了.
在ajax-request
将跟踪该重定向AFAIK.实际内容(.responseText
,.responseXML
)将是您重定向到的页面中的内容.
您可能能够拦截2或3 上的重定向(status-code
,location-header
)readyState
,但不确定它.