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)]

 

 

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