6

Angularjs の電話のチュートリアルを進めていて、リモート サーバーから電話の JSON を取得したいと考えています。

$http.get('http://myserver.com/phones.json').success(function(data) {
    $scope.phones = data;
});

これはCORSが原因で失敗しました。GETリクエストではなくOPTIONSを送信していたため、この最初の行をコントローラーに追加しました

delete $http.defaults.headers.common['X-Requested-With'];    

Charles で、myserver.com に対して GET not OPTIONS 要求が行われ、電話の JSON が応答に含まれていることがわかります。しかし、http.get はまだステータス 0 で失敗しており、「データ」は null です。

次に何を試すべきかわからない。任意の洞察をいただければ幸いです。

4

3 に答える 3

0

クロスドメイン リクエストを作成している場合は、許可されているかどうかを知るために、プリフライト リクエストとして OPTION リクエストを作成するのが適切です。CORS が失敗した場合、ブラウザはデータを受け取りますが、エラーがスローされます。したがって、html を同じドメインに配置するか、CORS をバックエンドに追加します (これはより困難です)。

于 2013-09-02T20:30:04.560 に答える
0

$http.jsonp メソッドを使用してクロスドメイン GETS を実装する優れたチュートリアルを次に示します。ヘッダーへのハッキングはありません。

http://net.tutsplus.com/tutorials/javascript-ajax/building-a-web-app-from-scratch-in-angularjs/

于 2013-09-04T20:19:00.157 に答える