web-dev-qa-db-ja.com

AngularJS-$ http getはステータス0でエラーを返しますか?

サーバーから$ http getを使用してXMLデータを取得しようとしているAngularJSアプリケーションがあります http://example.com/a/b/c/d/getDetails?fname=abc&lname = def (ブラウザにリンクを入力して手動でアクセスすると、XMLファイルのツリー構造が表示されます)。

アプリケーションを実行すると、そのリンクからのデータがフェッチされません。代わりに、status 0のエラーが表示されます。

//url = http://example.com/a/b/c/d/getDetails?fname=abc&lname=def
$http.get(url).success(function (data){
                alert("Success");
                deferred.resolve(data);
            }).error(function (data, status){
                console.log("Error status : " + status);
            });

$ http.getが失敗し、ステータス0を返すエラー関数に移動する理由がわかりません。

しかし、JSONオブジェクトを持つローカルサーバーにURLを渡した場合、それは機能します。

別のドメイン(CORSの問題?)などからXMLファイルにアクセスしようとしたことが原因ですか?

私を助けてください!

10
kumareloaded

HTTPアクセスコントロール(CORS) の問題があります。

REST要求に応答するサーバーは、Angularが応答を適切に消費できるようにするために、CORSによって指定されたヘッダーを含める必要があります。基本的に、これはAccess-Controlを含めることを意味します許可されているリクエストの送信元のサーバーを指定する、応答のAllow-Originヘッダー( ref

ディレクティブ Angular を使用すると、ソーシングに使用されるURLを確実に使用するためのホワイトリストとブラックリストを取得/設定できますAngularテンプレートが安全です。

17
KByK

はい、それは正解です。$ httpのデフォルトのコンテンツタイプは「application/json」であるため、リクエストデータまたはレスポンスデータを変更する場合は、tranformRequestおよびtranformResponseを使用して変更できます。あなたはそれについてより多くの情報を見つけることができます ここ

また、tranformRequestの実装に関する記事もあります jsonからpostデータを変更してangularjsでpostを形成します

2
Kuldeep Dangi