CORS GET与自定义标题:是否可以摆脱OPTIONS

时间:2014-07-16 09:12:44

标签: javascript angularjs http cors

我正在执行CORS请求(来自角度资源)并执行预检OPTIONS调用。我确实有自定义标题行,我认为这是调用它的原因。

但是,如果我可以设置东西以使自定义标题(我们称之为X-Auth-Token)不生成OPTIONS请求,我会徘徊?或者它是为任何自定义标题设置的石头行为?

OPTION请求正在触发服务器上的某些事务,我想摆脱它。

2 个答案:

答案 0 :(得分:5)

如果您的请求包含自定义请求标头,那么是的,您必须拥有预检请求。但是,如果您可以摆脱自定义标题,则可以消除预检。一种方法是将X-Auth-Token标头移动到其他位置,例如查询参数。这个问题讨论了减少预检请求的方法:How to apply CORS preflight cache to an entire domain

另请注意,OPTIONS请求应该是幂等的。如果你的OPTIONS请求也在改变服务器上的状态,我会考虑修复它并以正确的方式支持预检请求。网络上的任何用户都可以触发任何服务器的预检请求,因此您应确保您的服务器受到保护。

答案 1 :(得分:2)

尚未发表评论,所以我将其作为答案发布:你应该看看this question。您可以使用白名单功能强制关闭OPTIONS:

myApp.config(['$sceDelegateProvider', function($sceDelegateProvider) {
    $sceDelegateProvider.resourceUrlWhitelist(['self', 'http://mhnystatic.s3.amazonaws.com/**', 'http://mhnystatic2.s3.amazonaws.com/**']);
}])