到目前为止,我已尝试将以下内容添加到我的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
次请求?
答案 0 :(得分:1)
在<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>
元素