2013-10-13 5 views
7

私は、HTTP AuthorizationヘッダーとCORS要求について質問があります:AngularJSとクロスドメインのPOST

WebブラウザがPOSTリクエストでAuthorizationヘッダを送信していないように私には思われるが、これを回避する方法はありますか?ここ

は私の角度コードである:サーバ側で

var app = angular.module('app', []) 
    .config(['$httpProvider', function($httpProvider) { 
     $httpProvider.defaults.useXDomain = true; 
     delete $httpProvider.defaults.headers.common['X-Requested-With']; 
    }]); 

    app.controller('ctrl', function ($scope, $http) { 
     $scope.insert = function() { 

      $http.post('http://my.api.com/Insert', 
       { 
        headers: { 
         'Authorization': 'Basic dGVzdDp0ZXN0', 
         'Content-Type': 'application/x-www-form-urlencoded' 
        }, 
        data: { 
         'Code': 'test data' 
        }, 
        withCredentials: true 
       }); 
     }; 
    }); 

私は私のweb.configに

<httpProtocol > 
    <customHeaders> 
    <add name="Access-Control-Allow-Origin" value="*" /> 
    <add name="Access-Control-Allow-Headers" value="Cache-Control, Pragma, Origin, Authorization, Content-Type, X-Requested-With" /> 
    <add name="Access-Control-Allow-Methods" value="GET,POST,PUT,DELETE,OPTIONS" /> 
    <add name="Access-Control-Allow-Credentials" value="true" /> 
    </customHeaders> 
</httpProtocol> 
+0

uはそのための解決策を見つけましたか? –

答えて

11

あなたは$http.postを間違って使用しています。 2番目のパラメータはデータです。サーバーに送信する必要があります。このようなヘッダーは設定できません。あなたのケースでは、それはJSONペイロード

としてオブジェクト全体 を送信します、これは試してみてください:

$http({ 
     url:'http://my.api.com/Insert', 
     method:"POST", 
     headers: { 
        'Authorization': 'Basic dGVzdDp0ZXN0', 
        'Content-Type': 'application/x-www-form-urlencoded' 
     }, 
     data: { 
       'Code': 'test data' 
     } 
    }); 
+0

それは、ありがとう!私が修正しなければならなかったもう一つのことはwithCredentialsを使うことができないことです:あなたがAccess-Control-Allow-Originを持っているならtrue:* – aron

+0

@aron:ありがとう、更新されました。私の場合は –

+0

で動作しませんでした。 –

0

withCredentialsこれを持っている - {ブール} - でwithCredentialsフラグを設定するのかどうかをXHRオブジェクト。詳細については、資格情報を含むリクエストを参照してください。

+0

私はそれを試しました、それは助けません – aron

関連する問題