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

很简单的段$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

répondre à tous(3)
给我你的怀抱

1) Le cross-domain n'a rien à voir avec le type de framework utilisé,
(PS : après avoir ajouté API_HOST_URL à une autre page, la valeur de la publication va vers ce chemin, et aucune erreur inter-domaine est signalé, mais pareil Copiez-le, mais cela ne fonctionne pas dans la méthode get) Une autre page est-elle dans le même domaine que votre page Le même problème lors de l'utilisation de get ? /jsonp sur une autre page ?
2) Après avoir utilisé JSONP, veuillez vérifier si le contenu des données renvoyées répond aux exigences du format json. Sinon, une erreur similaire sera signalée
. SyntaxError non capturé : jeton inattendu :

小葫芦

Vous devrez peut-être ajouter des en-têtes :

app.all('*', function (req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
    res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");
    res.header("X-Powered-By", ' 3.2.1');
    res.header("Content-Type", "application/json;charset=utf-8");
    next();
});
Ty80

Si vous souhaitez effectuer une inter-domaine, jsonp est préféré, puis assurez-vous que le serveur le renvoie dans le format de syntaxe js normal
Par exemple, la valeur de retour est :
var test = {"status":1,"data":5};

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal