要解决AngularJS中CORS策略阻止XMLHttpRequest访问的问题,可以采取以下方法之一:
方法1:在服务端配置CORS头
在服务端的响应中添加CORS头,允许来自特定来源的请求。例如,在Node.js中,可以使用以下代码设置CORS头:
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "http://localhost:8080"); // 允许来自http://localhost:8080的请求
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
next();
});
方法2:使用AngularJS的$httpProvider配置
在AngularJS应用的配置阶段,可以使用$httpProvider配置CORS头。例如:
app.config(function($httpProvider) {
$httpProvider.defaults.headers.common["Access-Control-Allow-Origin"] = "*"; // 允许所有来源的请求
});
方法3:使用JSONP代替XMLHttpRequest
如果服务器不支持CORS,可以尝试使用JSONP来代替XMLHttpRequest。JSONP通过动态创建一个标签,向服务器请求数据,并在响应中返回一个回调函数的调用。例如:
app.controller("MyController", function($scope, $http) {
$http.jsonp("http://api.example.com/data?callback=JSON_CALLBACK")
.success(function(data) {
// 处理返回的数据
})
.error(function(error) {
// 处理错误
});
});
以上是解决AngularJS中CORS策略阻止XMLHttpRequest访问的几种方法,根据具体情况选择适合自己的方法进行解决。