用angularjs $http 请求,调用其他服务器的接口,出现跨域的问题。
解决方法:http://blog.i-ng.net/articles/2016/11/09/1478658262224.html
需要服务器端设置允许接受跨域请求
response.setHeader("Access-Control-Allow-Origin", "*"); response.setHeader("Access-Control-Allow-Methods","GET"); response.setHeader("Access-Control-Allow-Headers","x-requested-with");
发现原来jsonp只请求不可以附带post数据,只能在作为QueryString附带在链接后面,$http.post()也一样,ps:angularjs 的$http.post()默认发送的是json数据,附在body上。
然后我发现回调函success并没有执行,然后发现了这个 https://segmentfault.com/q/1010000002407111
我们也可以在报文的querystring看到
其中angular.callback._0根据请求次数会变化, angular.callback._0、angular.callback._2、angular.callback._3 .............
返回数据必须使用angular.callback._0(json数据)的形式返回
不难看出jsonp方法就是直接页面输出调用。
$http.jsonp('http://www1.xxxx.com/tech/x/ajax_xxx.jsp?jsonp=JSON_CALLBACK&account='+account+'&password='+password, {'Content-Type':'application/x-www-form-urlencoded'}).success(function (response) { $scope.person = response;}).error(function (response,status) { $scope.error=status; })
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于