webapi權限常見錯誤
錯誤一:
Response for preflight has invalid HTTP status code 405.
解決方案:
屏蔽配置文件中的如下代碼
<!--<handlers>
<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>-->
錯誤二:
No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:2062' is therefore not allowed access. The response had HTTP status code 500.
<!--<add name="access-control-allow-headers" value="accept,origin,token,content-type,Authorization" />-->
解決方案:
跨域造成的,解決跨域即可:
<httpProtocol>
<customHeaders>
<!-- Enable Cross Domain AJAX calls -->
<add name="Access-Control-Allow-Origin" value="http://localhost:2062" />
<add name="Access-Control-Allow-Methods" value="GET,POST,PUT,DELETE,OPTIONS"/>
<add name="Access-Control-Allow-Headers" value="Content-Type,Authorization"/>
</customHeaders>
</httpProtocol>
錯誤三:
The 'Access-Control-Allow-Origin' header has a value 'http://localhost:2062/' that is not equal to the supplied origin. Origin 'http://localhost:2062' is therefore not allowed access.
解決方案:
由於手誤造成的,域名后面不能有任何字符或符合
正確:'http://localhost:2062
錯誤:'http://localhost:2062/
錯誤四:
404 Not Found
解決方案:
增加兩個modules任意一個都可以解決404,但如果驗證權限會出現405錯誤;
<modules>
<remove name="UrlRoutingModule-4.0"/>
<add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition=""/>
</modules>
<modules runAllManagedModulesForAllRequests="true">
<remove name="WebDAVModule" />
</modules>
錯誤五:
Failed to load http://192.168.31.110:8014/api/Login/CheckLogin: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://192.168.31.110:8013' is therefore not allowed access.
解決方案:
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Content-Type,x-xsrf-token,X-Requested-With" />
<add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
</customHeaders>
</httpProtocol>
錯誤六:
The requested resource does not support http method 'OPTIONS
解決方案:
錯誤七:
<!--IIS7/7.5上必須加這個配置,否則訪問報錯--> 23 <modules runAllManagedModulesForAllRequests="true"> 24 <remove name="WebDAVModule" /> 25 </modules> 26 <validation validateIntegratedModeConfiguration="false" /> 27 <handlers> 28 <remove name="WebDAV" /> 29 <remove name="WebAPI_64bit" /> 30 <remove name="WebAPI_32bit" /> 31 <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" /> 32 <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" /> 33 <remove name="ExtensionlessUrlHandler-Integrated-4.0" /> 34 <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" resourceType="Unspecified" requireAccess="Script" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" /> 35 <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" resourceType="Unspecified" requireAccess="Script" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" /> 36 <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" resourceType="Unspecified" requireAccess="Script" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" /> 37 <add name="WebAPI_64bit" path="*" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="None" preCondition="classicMode,runtimeVersionv4.0,bitness64" /> 38 <add name="WebAPI_32bit" path="*" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="None" preCondition="classicMode,runtimeVersionv4.0,bitness32" /> 39 </handlers>
-----
錯誤八:
<remove name="OPTIONSVerbHandler" />
這個是罪魁禍首,移除即可
HTTP Error 403.14 - Forbidden
Web 服務器被配置為不列出此目錄的內容。
解決方案:
jQuery.support.cors = true;//設定支持跨域