以下のコードでは、AngularJS$http
メソッドが URL を呼び出し、xsrf オブジェクトを「リクエスト ペイロード」として送信します (Chrome デバッガーのネットワーク タブで説明されているとおり)。jQuery$.ajax
メソッドは同じ呼び出しを行いますが、xsrf を「フォーム データ」として送信します。
AngularJS でリクエスト ペイロードではなくフォーム データとして xsrf を送信するにはどうすればよいでしょうか?
var url = 'http://somewhere.com/';
var xsrf = {fkey: 'xsrf key'};
$http({
method: 'POST',
url: url,
data: xsrf
}).success(function () {});
$.ajax({
type: 'POST',
url: url,
data: xsrf,
dataType: 'json',
success: function() {}
});
ベストアンサー1
渡される $http オブジェクトに次の行を追加する必要があります。
headers: {'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'}
渡されたデータは URL エンコードされた文字列に変換する必要があります。
> $.param({fkey: "key"})
'fkey=key'
つまり、次のようになります。
$http({
method: 'POST',
url: url,
data: $.param({fkey: "key"}),
headers: {'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'}
})
から:https://groups.google.com/forum/#!msg/angular/5nAedJ1LyO0/4Vj_72EZcDsJ
アップデート
AngularJS V1.4で追加された新しいサービスを使用するには、