0

クライアントから別のプロジェクトの 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>
4

1 に答える 1