即使 CORS 不允许标头值,Angularjs 也会继续进行服务器调用

Posted

技术标签:

【中文标题】即使 CORS 不允许标头值,Angularjs 也会继续进行服务器调用【英文标题】:Angularjs proceed with server call even if CORS does not allow a header value 【发布时间】:2015-06-12 06:07:35 【问题描述】:

我有一个 AngularJS 应用程序,它与各种 java 服务通信。在应用程序中,我在 http 拦截器中有一个全局 http 标头设置。这意味着来自我的应用程序的所有服务请求都将获取标头值。

现在的问题是所有服务 CORS 设置都不允许使用此标头值。有几个服务可以,而其他服务没有。对不支持标头的服务器的服务调用失败,因为 http 拦截器总是放置标头值。

在上述情况下,是否有更好的设计方法以避免上述问题?

感谢任何帮助...

【问题讨论】:

【参考方案1】:

如何添加响应拦截器,寻找 401 状态?如果您收到 401,请尝试在没有标头的情况下再次执行相同的请求。如果此操作成功,请将此域“列入白名单”以发出所有后续请求,但不包含您不想要的标头。

否则,如果您要调用的服务数量有限,是否可以在请求拦截器中将它们列入白名单?这可能会更容易,但不是很优雅。

【讨论】:

以上是关于即使 CORS 不允许标头值,Angularjs 也会继续进行服务器调用的主要内容,如果未能解决你的问题,请参考以下文章

CORS XMLHttpRequest 不允许我设置标头

IE CORS - 即使指定了标头,访问控制允许标头错误

即使存在标头,CORS 也会失败

即使存在标头,CORS 也会失败

“访问 XMLHttpRequest 已被 CORS 策略阻止”即使我已允许所有源/标头/方法

AngularJS Web App 缺少 CORS 标头“Access-Control-Allow-Origin”