我有一个反向代理来检查多个应用程序的全局身份验证。当用户断开连接但仍在尝试使用我的应用程序时,代理会发送 302 响应:
HTTP/1.1 302 Found
Date: Wed, 11 Sep 2013 09:05:34 GMT
Cache-Control: no-store
Location: https://other.url.com/globalLoginPage.html
Content-Length: 561
Content-Type: text/html; charset=iso-8859-1
Via: 1.1 my-proxy.com
Connection: Keep-Alive
在 angularJs 中,调用了错误回调,但响应头为空,状态为 0,数据为空字符串。所以看起来我真的无能为力来处理响应......
我已经看到了几个关于这个主题的问题,我仍然不明白发生了什么(CORS因为代理或不同的域在位置?,302浏览器行为?)。
特别是答案中有这一部分(https://stackoverflow.com/a/17903447/1093925):
注意:如果您的服务器将响应代码设置为 301 或 302,您将无法获取 Location 标头,因为 XMLHttpRequest 对象将自动且透明地跟随它。
这个 XMLHttpRequest 对象呢?
在非常旧的 Chrome 版本(不能使用较新版本)中,我可以在网络面板中看到相应的请求,但由于没有响应,它似乎失败了。
在最新版本的 Firefox 中,没有发生任何事情。
由于无法更改代理配置和响应,我可以对此做些什么吗?
更新:
我今天重播了我的场景,并且感谢更新版本的萤火虫,我能够获得有关正在发生的事情的更多详细信息。
我离问题的答案不远:跨域策略。
由于它是我的应用程序发出的 HTTP 请求,因此浏览器拒绝以下 XMLHttpRequest(在应用程序中看起来像相同的请求)。因此出现错误和空响应。
所以我认为对此我无能为力