WebAPI跨域調用的問題的處理

按照之前的文章《創建第一個WebAPI項目》新建好WebAPI項目後,在本項目中調用WebAPI沒問題。

但今天在另一個項目調用這個WebAPI項目,就一直沒有數據返回。糾結了一個下午,發現原來是跨域問題。在以下文章得到解決方法。

https://www.cnblogs.com/hnsongbiao/p/9375997.html

以下記錄本次問題解決過程:

1、使用Nuget搜索“microsoft.aspnet.webapi.cors”安裝第一個。安裝好後可以“引用”處查看到以下2個packages

2、在App_Start文件夾下面的WebApiConfig.cs文件夾配置跨域:

3、如文章的言,在IE下確實還是不行。

那麼如何解決IE瀏覽器支持問題呢,其實在調用處指定 jQuery.support.cors = true; 這一句就能解決IE8、9的問題了。--加了“jQuery.support.cors = true;”果然可以。

4、考慮到安全問題。不能對所有請求都接受。於是需要限制請求的來源。

配置方法一 

在Web.Config配置:

<appSettings>
    <!--限制請求到WebAPI的來源 -->
    <add key="cors:allowedMethods" value="*"/>
    <add key="cors:allowedOrigin" value="http://localhost:8089"/>
    <add key="cors:allowedHeaders" value="*"/>
  </appSettings>

 

(PS:注意需要引用System.Configuration

--經測試,如果非http://localhost:8089 調用,確實調用不成功。

 

配置方法二 

如果你只想對某一些api做跨域,可以直接在API的類上面使用特性標註即可。

[EnableCors("http://localhost:8082,http://localhost:8089", "*", "*", SupportsCredentials = true)]

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章