当我从我的客户端向另一个项目的web api创建一个$ http.post时,firebug和chrome都会显示一个OPTIONS方法,然后显示一个POST方法。
问题
两个请求都实际执行我的API操作。如果我限制为POST,则OPTIONS失败并且帖子永远不会发生。我在角度和webapi都打开了CORS。
我的app.js有以下几行:
$httpProvider.defaults.useXDomain = true;
delete $httpProvider.defaults.headers.common['X-Requested-With'];
我的api电话:
$scope.add = function () {
var role = { Name: 'admin' };
$http.post('http://localhost:7514/Roles/add', role).
success(function () {
alert('RolesController.add');
}).
error(function (message) {
alert('FAILED EXECUTE RolesController.add');
});
};
webapi web.config
<system.webServer>
...
<!-- added for cors handling, remove when using a dedicated cors handler or the system.web.cors dll-->
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*"/>
<add name="Access-Control-Allow-Headers" value="Origin, X-Requested-With, Content-Type, Accept" />
</customHeaders>
</httpProtocol>
</system.webServer>
答案 0 :(得分:0)
如果您使用每晚的CORS包,OPTIONS请求将被一个消息处理程序拦截,该处理程序不执行该操作,但仍会发送相应的响应头。有关更多信息以及如何使用夜间软件包,您应该查看有关获取CORS nightly软件包的博客文章。
确保从下拉菜单中选择“预售”。