每当 CORS $http 请求失败时,返回的响应始终为 0
Whenever a CORS $http request fails, the response returned is always 0
这是一个与 SO.But 中的 post 类似的问题,此处提供的答案不适用于我的情况,因为我无法更改服务器的响应 header。
假设一个 http POST 到不同的来源。这意味着 CORS,包括 CORS 预检交换。现在假设由于服务器问题,OPTIONS 请求 returns 出现 503 service unavailable
错误。在这种情况下,错误处理程序为数据提供 ""
,为状态提供 0
,而不是给我状态代码 503 和文本:service not available
。下图说明了这种情况的示例。
我正在使用 angularjs $http 并且我知道在响应中没有 CORS header 如果这样的错误 happen.and 我无法更改它。
有什么方法可以让我收到正确的错误代码和我拒绝的文本 object。
这不是 AngularJS / $http 的问题,而是浏览器及其 XMLHttpRequest 的行为 object:如果 CORS 请求失败,浏览器不会提供任何信息返回给来电者。
在我得到这个理解之前,我也认为这是一个 AngularJS 问题,我在 Angular 的 github 上提出了一个未解决的问题 -> 并附有相应的评论。
https://github.com/angular/angular.js/issues/13085#issuecomment-148047721
所以我认为似乎没有其他方法可以解决这个问题,在 503 的情况下也可以在代理/负载平衡器上添加 Access-Control-Allow-Origin
响应 header。
编辑:
如果您的负载均衡器是 HAproxy,以下内容也可能对您有所帮助:
HAproxy: different 503 errorfile for OPTIONS and POST methods
它展示了如何让 HAproxy 自主回答 CORS 请求。
这是一个与 SO.But 中的 post 类似的问题,此处提供的答案不适用于我的情况,因为我无法更改服务器的响应 header。
假设一个 http POST 到不同的来源。这意味着 CORS,包括 CORS 预检交换。现在假设由于服务器问题,OPTIONS 请求 returns 出现 503 service unavailable
错误。在这种情况下,错误处理程序为数据提供 ""
,为状态提供 0
,而不是给我状态代码 503 和文本:service not available
。下图说明了这种情况的示例。
我正在使用 angularjs $http 并且我知道在响应中没有 CORS header 如果这样的错误 happen.and 我无法更改它。
有什么方法可以让我收到正确的错误代码和我拒绝的文本 object。
这不是 AngularJS / $http 的问题,而是浏览器及其 XMLHttpRequest 的行为 object:如果 CORS 请求失败,浏览器不会提供任何信息返回给来电者。
在我得到这个理解之前,我也认为这是一个 AngularJS 问题,我在 Angular 的 github 上提出了一个未解决的问题 -> 并附有相应的评论。
https://github.com/angular/angular.js/issues/13085#issuecomment-148047721
所以我认为似乎没有其他方法可以解决这个问题,在 503 的情况下也可以在代理/负载平衡器上添加 Access-Control-Allow-Origin
响应 header。
编辑:
如果您的负载均衡器是 HAproxy,以下内容也可能对您有所帮助:
HAproxy: different 503 errorfile for OPTIONS and POST methods
它展示了如何让 HAproxy 自主回答 CORS 请求。