Asp.net
asp.net web api 控制器中不允許使用 405 方法選項?
我有一個非常常見的問題,它說方法不允許(
OPTIONS)GET請求。每當我進行 API 呼叫時,都會收到以下錯誤。我有這個設置web.config:<system.webServer> <modules> <remove name="WebDAVModule"/> </modules> <httpProtocol> <customHeaders> <add name="Access-Control-Allow-Origin" value="*"/> <add name="Access-Control-Allow-Headers" value="Origin, Authorization, X-Requested-With, Content-Type, Accept"/> <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS"/> </customHeaders> </httpProtocol> <handlers> <remove name="WebDAV"/> <remove name="ExtensionlessUrlHandler-Integrated-4.0"/> <remove name="OPTIONSVerbHandler"/> <remove name="TRACEVerbHandler"/> <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0"/> </handlers> </system.webServer>我嘗試對所有原始標頭和方法
Asp.Net.WebApi.Cors全域使用和強制執行 CORSEnableCors(),但這也不起作用。
在你
handlers之後<remove name="OPTIONSVerbHandler"/>,添加這個:<add name="OPTIONSVerbHandler" path="*" verb="OPTIONS" modules="IsapiModule" requireAccess="None" scriptProcessor="C:\Windows\System32\inetsrv\asp.dll" resourceType="Unspecified" />請參閱IIS hijacks CORS Preflight OPTIONS request中的答案。
或者甚至可能只是這樣:
<add name="OPTIONSVerbHandler" path="*" verb="OPTIONS" modules="ProtocolSupportModule" requireAccess="None" />如果這不起作用,那麼將在您的
global.asax或其他程式碼中添加以下內容:protected void Application_BeginRequest(object sender,EventArgs e) { HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*"); if(HttpContext.Current.Request.HttpMethod == "OPTIONS") { HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE"); HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", "Content-Type, Accept"); HttpContext.Current.Response.AddHeader("Access-Control-Max-Age", "1728000" ); HttpContext.Current.Response.End(); } }