【问题标题】:CORS and Preflight (OPTIONS) response codes in case of authorization error授权错误时的 CORS 和预检 (OPTIONS) 响应代码
【发布时间】:2017-06-12 23:35:55
【问题描述】:

在预检请求中,我应该使用哪些代码来处理授权错误?

我的意思是,我可以有 2 个不同的未经授权的错误:

  • 用户无法运行预检(OPTIONS 方法已处理 - 所以我认为我不应该使用 405 - 但用户无权请求 OPTIONS)
  • 用户无权调用请求的方法(由 Access-Control-Request-Method 指定)

【问题讨论】:

    标签: http cors


    【解决方案1】:

    当我试图在我的 Web 服务上运行 CORS 时,我有一个类似的设置,显示 405 错误和 500 错误。如果 Request 是飞行前的 OPTIONS 方法,我的修复基本上需要一个 response.End() 调用。 CORS 文档中的 web.config Web 处理程序很好,只要 OPTIONS 包含在允许的调用列表中。我不需要将任何客户处理程序移动到代码中。

    基本上,我的修复/设置在我的 ApplicationOnBeginRequest 处理程序中包含一个主要修复:

    private void ApplicationOnBeginRequest( object sender, EventArgs eventArgs )
        {
    ...
                if ( context.Request.HttpMethod == "OPTIONS" )
                    response.End();
            }
    

    以及我的 web.config 中的这些处理程序:

    <system.webServer>
        <!--Other handlers/modules ...-->
        <httpProtocol>
            <customHeaders>
                <clear />
                <add name="Access-Control-Allow-Origin" value="*" />
                <add name="Access-Control-Allow-Credentials" value="true" />
                <add name="Access-Control-Allow-Headers" value="Content-Type,Accept" />
                <add name="Access-Control-Allow-Methods" value="GET,POST,PUT,DELETE,OPTIONS" />
            </customHeaders>
        </httpProtocol>
       </system.webServer>
    

    【讨论】:

      猜你喜欢
      • 2017-08-01
      • 2020-07-23
      • 2020-11-25
      • 2019-08-22
      • 2020-04-09
      • 2015-12-16
      • 2017-06-23
      • 2018-02-19
      • 2021-11-12
      相关资源
      最近更新 更多