WebAPI CORS 支持跨域POST

11 篇文章 1 订阅

网上一般能找到的都是通过Microsoft.AspNet.WebApi.Cors来实现CORS,这是通过dll的方式,然后还有一种是通过config的方式

1、dll方式实现CORS

这种方式的好处就是控制精细,可以对同一个站点下的action分别赋予不同的CORS设置,具体怎么实现这里就不多说了,不了解的可以看http://www.cnblogs.com/artech/p/cors-4-asp-net-web-api-05.html
然后这里记录下实际可能会出现的问题

a) System.Web.Http未能加载

这个可以直接下载dll,然后添加到项目引用中

b) 尝试访问安全关键类型

这是因为System.Web.Http版本不一致,本人做测试时Microsoft.AspNet.WebApi.Cors版本为5.2.3,而默认添加的System.Web.Http为4.0版本,通过Nuget重新下载个匹配版本,然后将引用调整为5.2.3版本的引用即可修复问题

<package id="Microsoft.AspNet.WebApi.WebHost" version="5.2.3" targetFramework="net45" />


c) 默认appsetting配置导致的错误

http://diaosbook.com/Post/2013/12/27/tips-for-aspnet-webapi-cors备注,个人测试时用的Vs2013未遇到此种问题)


2、config方式实现CORS

在Web.config的system.webServer配置节下增加配置,这种方式的好处是简单,只要在这里加了这个配置,那么所有的api都可以按同一种规则支持跨域请求

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

如果是HTTP Basic Access authentication,似乎还需要个<add name="Access-Control-Allow-Credentials" value="true" />,此处还未验证

最后补充个Cors相关说明:http://www.cnblogs.com/artech/p/cors-4-asp-net-web-api-02.html

以及官方链接:http://www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-api

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值