クライアントから別のプロジェクトの Web API に $http.post を作成すると、firebug と chrome の両方で OPTIONS メソッドが表示され、次に POST メソッドが表示されます。
問題
両方のリクエストが実際に API アクションを実行します。POST に制限すると、OPTIONS が失敗し、投稿が行われません。angularと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>