CORS GET请求使用自定义标头:是否可以摆脱OPTIONS方法

3

我正在进行CORS请求(来自Angular资源),并且它会执行预检查OPTIONS调用。我确实有自定义的报头行,我认为这就是它被调用的原因。

但我想知道是否可以设置事情,以便自定义标头(我们称其为X-Auth-Token)不会生成OPTIONS请求?或者任何自定义标头都是一成不变的行为?

OPTIONS请求会在服务器上触发某些交易,我想摆脱那个问题。

2个回答

5
如果您的请求具有自定义请求头,则必须进行预检请求。然而,如果可以去掉自定义头,则可以避免预检请求。一种方法是将 X-Auth-Token 头移至其他位置,例如查询参数。这个问题讨论了如何减少预检请求:如何将CORS预检缓存应用于整个域
还要注意,OPTIONS 请求应该是幂等的。如果 OPTIONS 请求也在更改服务器上的状态,建议您修复此问题并以正确的方式支持预检请求。Web 上的任何用户都可以触发对任何服务器的预检请求,因此请确保您的服务器受到保护。

2

由于我还不能发表评论,所以我会把它作为答案发布:

您应该查看这个问题。您可以使用白名单功能来强制关闭OPTIONS:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接