angularjs与跨域

用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;
       

        })