问题描述:
在使用ASP.NET的MVC5进行WebAPI开发的时候,在跨域的情况下会报跨域的错,
No ‘Access-Control-Allow-Origin‘ header is present on the requested resource. Origin ‘http://localhost:9090‘ is therefore not allowed access.
解决办法:
服务端设置响应头,在webapi的web.config做如下设置,加在<system.webServer>节点下
<httpProtocol> <!--跨域配置开始--> <customHeaders> <add name="Access-Control-Allow-Origin" value="*" /> <!--支持全域名访问,不安全,部署后需要固定限制为客户端网址--> <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" /> <!--支持的http 动作--> <add name="Access-Control-Allow-Headers" value="Content-Type,X-Requested-With,token" /> <!--响应头 请按照自己需求添加 这里新加了token这个headers--> <add name="Access-Control-Request-Methods" value="GET, POST, PUT, DELETE, OPTIONS" /> <!--允许请求的http 动作--> </customHeaders> <!--跨域配置结束--> </httpProtocol>
配置完启动server,然后再次访问
再次报错
Object {readyState: 4, responseText: "{"Message":"已拒绝为此请求授权。"}", responseJSON: Object, status: 401, statusText: "Unauthorized"}
解决办法是:
Controller加上[AllowAnonymous]特性
修改后重新启动,再次访问,成功!
原文:http://www.cnblogs.com/Rexcnblog/p/6490999.html