很简单的段$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 :
1) クロスドメインは、使用されているフレームワークの種類とは関係ありません。
(追記: API_HOST_URL を別のページに追加した後、投稿値はそのパスに移動し、クロスドメイン エラーは報告されませんが、同じですコピーされて get で使用されます。メソッドは機能しません) 他のページ はあなたのページと同じドメインですか? 別のページで get/jsonp を使用する場合も同じ問題ですか? 2) JSONP を使用した後、返されたデータの内容が JSON 形式の要件を満たしているかどうかを確認してください。満たしていない場合は、同様のエラーが報告されます
。 キャッチされない構文エラー: 予期しないトークン:
いくつかのヘッダーを追加する必要がある場合があります:
リーリークロスドメインを使用する場合は、jsonp が優先され、サーバーが通常の js 構文形式でそれを返すようにしてください
たとえば、戻り値は次のようになります:
var test = {"status":1,"data":5};