クロスオリジンで正常に動作する次のjQueryコードがあります。
jQuery.ajax({
url: "http://example.appspot.com/rest/app",
type: "POST",
data: JSON.stringify({"foo":"bar"}),
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function (response) {
console.log("success");
},
error: function (response) {
console.log("failed");
}
});
これを成功させずにAngular.jsコードに変換しようとしています:
$http({
url: "http://example.appspot.com/rest/app",
dataType: "json",
method: "POST",
data: JSON.stringify({"foo":"bar"}),
headers: {
"Content-Type": "application/json; charset=utf-8"
}
}).success(function(response){
$scope.response = response;
}).error(function(error){
$scope.error = error;
});
助けてくれてありがとう。
3
angular.jsはわかりませんが、faile()は関数の名前が間違っている可能性がありますか?
—
Bogdan Rybak
—
エンドレス
解決策を発見した可能性があるstackoverflow.com/questions/12111936/…深く掘り下げる必要がある...
—
エンドレスな
OPTIONSリクエストはブラウザによって発行され、AngularJS /アプリケーションに対して透過的です。OPTIONが成功すると、元のリクエスト(POST / GET /何でも)が続き、コードはOPTIONリクエストではなくメインリクエストに対してコールバックされます。
—
pkozlowski.opensource 2012
AngularがリクエストメソッドをOPTIONSに変更しているのではないでしょう。おそらく、ブラウザがCORSリクエストを実行できるかどうかを確認するためのチェックです。別のドメインへの呼び出しを行おうとしている場合、ブラウザは最初にOPTIONSリクエストを行い、それが許可されているかどうかを確認します。
—
Ian