No 'Access-Control-Allow-Origin' header is present on the requested resource——Web Api跨域問題


最近使用C#寫了一個簡單的web api項目,在使用項目中的.cshtml文檔測試的時候沒有任何問題,但是在外部HBuilder上面編寫.html通過Ajax調用web api路徑時報錯:

No 'Access-Control-Allow-Origin' header is present on the requested resource.

導致這個問題的原因是在跨域訪問web api的api時,C#自帶的web api並不能支持跨域訪問,如果需要,可以更改配置來實現。

1、更改Web.config文件,加上如下代碼

 

<httpProtocol>
      <customHeaders>
        <add name="Access-Control-Allow-Origin" value="*"/>
        <add name="Access-Control-Allow-Headers" value="Content-Type,Token" />
        <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
      </customHeaders>
</httpProtocol>

 

 

配置了Web.config文件后,平常使用的GET,POST可以使用,但是使用PUT請求的時候還是會報405的錯,即method not allow,然后需要配置Global.asax文件

插入如下代碼:

protected void Application_BeginRequest()
{
      if (Request.Headers.AllKeys.Contains("Origin") && Request.HttpMethod == "OPTIONS")
      {
            Response.End();
      }
}

配置這兩個文件之后,web api就可以跨域訪問了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM