2

Request Bin を使用してデータを投稿しています。私のコントローラーには、次のコードがあります。

$http.post('http://requestb.in/redacted', fooBar).
    success(function(data) {
        $scope.fooBarPostedSuccess = true;
    }).
    error(function(err) {
        console.log("Error while posting to Request Bin");
        console.log("Error Info : " + err);
    });

これは、UI 上のボタンでトリガーされます。これがトリガーされると、データが Request Bin に投稿されず、次のエラーが発生します。

XMLHttpRequest cannot load http://requestb.in/redacted.
Origin http://localhost:3000 is not allowed by Access-Control-Allow-Origin.

AngularJS コントローラーを介してデータを要求ビンに投稿するにはどうすればよいですか? また、上記のエラーはどういう意味ですか?

編集:ここで、AngularJS で Node.js を使用していることを追加したいと思います。これはおそらくノードと関係がありますか?

4

3 に答える 3

1

CORS は GET と POST の両方を許可します

http://en.wikipedia.org/wiki/Cross-origin_resource_sharing

http://www.w3.org/TR/cors/

https://developer.mozilla.org/en-US/docs/HTTP/Access_control_CORS

さて、それは邪魔ではありません...私も、angularの$ httpではクロスドメインでPOSTできないことがわかりました。クロスドメインを問題なく投稿できる他のプロジェクトでjquery ajax呼び出しがあるため、私はそれについて疑っていました。そこで、$http POST を $.ajax POST に交換したところ、うまくいきました。

// $http({
//  url: url,
//  method: "POST",
//  data: data
// })
// .success(successCallback)
// .error(errorCallback)

// ole reliable
$.ajax({
  type : "POST",
  url : url,
  data : data,
  success : successCallback,
  error : errorCallback,
  cache : false,
  dataType : 'json',
})
于 2013-05-15T21:25:03.190 に答える
0

RequestBinの代わりに PutsReqを使用できます。PutsReq はCORSをサポートしています。

于 2015-08-29T21:29:21.770 に答える