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

Vas*_*sil 145 ajax http

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

gre*_*eim 207

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

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

实际上,您无法检测302响应是否已发生.如果302重定向导致200,那么您的程序的行为与原始请求直接导致200的行为完全相同.

这既是我的经验,也是规范中提到行为.

2016年更新:时间已经过去了,好消息是新的fetch()API被指定为处理重定向的方式提供更细粒度的控制,默认行为类似于XHR.也就是说,它只适用于本机实现fetch()的地方.polyfill版本的fetch() - 基于XHR- 继续具有XHR的限制.幸运的是,本机浏览器支持似乎很好地完善了.

  • 有趣的是,我到达这里是因为我遇到的情况是重定向显然没有被遵循......当重定向违反相同的原始策略时会发生这种情况. (43认同)
  • 2019 年更新:fetch 无法像我们 3 年前预期的那样工作): (5认同)
  • @Gus这可能是合乎逻辑的 (4认同)
  • RESTful API可以在POST请求之后发送201和Location头; 请参阅http://www.restapitutorial.com/lessons/httpmethods.html. (2认同)

jis*_*shi 7

ajax-request将跟踪该重定向AFAIK.实际内容(.responseText,.responseXML)将是您重定向到的页面中的内容.

您可能能够拦截2或3 上的重定向(status-code,location-header)readyState,但不确定它.