angular.js - angularjs $http.get无法跨域问题
phpcn_u1582
phpcn_u1582 2017-05-15 16:51:47
0
3
636

很简单的段$http.get向接口请求数据的方法。但是就是不知道什么原因,一直提示无法跨域。请问该怎么解决?(PS:在另外一个页面加入API_HOST_URL后,post值到那个路径,没有报过任何无法跨域的报错,但是同样的复制过来,在get方法下却不管用)

function togetpNo($scope,$http){
    var array=$scope.array;
    $http.get(API_HOST_URL+'/ss/test.do?pNo='+array)
     .success(function(data){
 alert(data);
 }).error(function(e){
 alert('请求失败了');
 })
}

报错内容:
XMLHttpRequest cannot load http://datatest.dev:8081/ss/test.do?pNo=h01,h02. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8080' is therefore not allowed access.

改成用jsonp写:

 $http.jsonp(API_HOST_URL+"/ss/test.do?jsonp=JSON_CALLBACK&pNo="+array)

报错:Uncaught SyntaxError: Unexpected token :

phpcn_u1582
phpcn_u1582

全員に返信(3)
给我你的怀抱

1) クロスドメインは、使用されているフレームワークの種類とは関係ありません。
(追記: API_HOST_URL を別のページに追加した後、投稿値はそのパスに移動し、クロスドメイン エラーは報告されませんが、同じですコピーされて get で使用されます。メソッドは機能しません) 他のページ はあなたのページと同じドメインですか? 別のページで get/jsonp を使用する場合も同じ問題ですか? 2) JSONP を使用した後、返されたデータの内容が JSON 形式の要件を満たしているかどうかを確認してください。満たしていない場合は、同様のエラーが報告されます
。 キャッチされない構文エラー: 予期しないトークン:

いいねを押す +0
小葫芦

いくつかのヘッダーを追加する必要がある場合があります:

リーリー
いいねを押す +0
Ty80

クロスドメインを使用する場合は、jsonp が優先され、サーバーが通常の js 構文形式でそれを返すようにしてください
たとえば、戻り値は次のようになります:
var test = {"status":1,"data":5};

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート