授权错误时的CORS和预检(OPTIONS)响应代码

时间:2016-08-01 12:10:30

标签: http cors

在预检请求中,我应该使用代码进行授权错误吗?

我的意思是,我可能有两种不同的未经授权的错误:

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

1 个答案:

答案 0 :(得分:0)

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

基本上,我的修复/设置在我的ApplicationOnBeginRequest处理程序中包含了这个ONE MAJOR FIX:

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>