【问题标题】:CORS GET with custom headers: is it possible to get rid of OPTIONS带有自定义标头的 CORS GET:是否可以摆脱 OPTIONS
【发布时间】:2014-09-06 17:52:20
【问题描述】:

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

但是,如果我可以设置一些东西,以便自定义标头(我们称之为 X-Auth-Token)不生成 OPTIONS 请求,我会徘徊吗?还是对任何自定义标头都设置了固定行为?

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

【问题讨论】:

    标签: javascript angularjs http cors


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      还不能评论,所以我将它作为anwser发布:

      你应该看看this question。您可以使用白名单功能强制关闭选项:

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

      【讨论】:

        猜你喜欢
        • 2014-01-14
        • 2016-11-12
        • 2016-04-05
        • 2016-10-26
        • 2015-04-19
        • 2012-12-09
        • 1970-01-01
        • 2020-10-18
        • 2013-04-28
        相关资源
        最近更新 更多