1. 程式人生 > 實用技巧 >C#/.NET-WebApi 呼叫時跨域問題,踩坑指南

C#/.NET-WebApi 呼叫時跨域問題,踩坑指南

在WebApi專案裡面,config已經添加了解決跨域問題的配置,

釋出後的介面,其他人也可以正常呼叫,

postman也可以正常呼叫,

但是自己呼叫的時候就出現了跨域問題。

配置檔案如下

 1 <system.webServer>
 2     <!--解決跨域問題-->
 3     <httpProtocol>
 4       <customHeaders>
 5         <clear />
 6         <add name="Access-Control-Allow-Methods" value="OPTIONS,POST,GET
" /> 7 <add name="Access-Control-Allow-Headers" value="Content-Type,Token" /> 8 <add name="Access-Control-Allow-Origin" value="*" /> 9 </customHeaders> 10 </httpProtocol> 11 <handlers> 12 <remove name="ExtensionlessUrlHandler-Integrated-4.0
" /> 13 <remove name="OPTIONSVerbHandler" /> 14 <remove name="TRACEVerbHandler" /> 15 <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" /> 16 </handlers> 17
<security> 18 <requestFiltering> 19 <!--最大允許請求長度,單位byte,當前限制為1G--> 20 <requestLimits maxAllowedContentLength="1073741824"></requestLimits> 21 </requestFiltering> 22 </security> 23 </system.webServer>

最後跨域的原因,

1.jQuery版本過低,這個是在調查的時候沒有想到的,

因為主流的3種解決方式(jsnop,nginx配置,CORS),

第一種無法使用,不支援POST,

第二種要改伺服器,也不能用,

第三種在配置已經有了。

2.可能和版本有關,contentType和ContentType也可能會有影響。

綜上,都是一些比較小眾且怪異的原因。