如何在ASP.NET应用程序中阻止OPTIONS请求

本文关键字:OPTIONS 请求 应用程序 ASP NET | 更新日期: 2023-09-27 18:25:53

到目前为止,我已经尝试将以下内容添加到我的web.config中:

<system.web>
    <authorization>
        <deny verbs="OPTIONS" users="*" />
    </authorization>
    <httpHandlers>
        <remove verb="*" path="*.asmx" />
        <add verb="OPTIONS" path="*" type="System.Web.DefaultHttpHandler" validate="true"/>
        <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false" />
    </httpHandlers>
</system.web>

您可以看到,我已经向httpHandlers节点添加了一个条目,但其中已经有几个其他条目,所以它不是其中唯一的条目。

即使有这两个条目,当我提出以下CURL请求时:

curl -v -X OPTIONS https://mySite.com

我在输出中看到以下内容:

< HTTP/1.1 200 OK
< Cache-Control: private, no-cache, no-store
< Allow: OPTIONS, TRACE, GET, HEAD, POST

为什么OPTIONS请求仍然被允许?

如何在ASP.NET应用程序中阻止OPTIONS请求

<authorization>中,您只能使用映射到ASP.NET的动词。

verbs: A comma-separated list of HTTP transmission methods that are denied access to the resource. Verbs registered to ASP.NET are GET, HEAD, POST, and DEBUG.

您可以尝试<verbs>元素