Javascript 从angular JS的控制器启用CORS
我有一个带有服务的控制器,可以从其他服务器获取json,我来到这里Javascript 从angular JS的控制器启用CORS,javascript,jquery,angularjs,cors,Javascript,Jquery,Angularjs,Cors,我有一个带有服务的控制器,可以从其他服务器获取json,我来到这里 跨源请求被阻止:同源策略不允许读取http:somesite.com上的远程资源。这可以通过将资源移动到同一域或启用CORS来解决。 我注意到,一些相同的问题将由“访问控制允许源代码”:“*”在我的标题中修复。在我的情况下,我看不到任何修复进展 这是我的控制器的代码: var myApp = angular.module('cplanner',[]); myApp.controller('GetItemCtrl', ['$sc
跨源请求被阻止:同源策略不允许读取http:somesite.com上的远程资源。这可以通过将资源移动到同一域或启用CORS来解决。
我注意到,一些相同的问题将由“访问控制允许源代码”:“*”
在我的标题中修复。在我的情况下,我看不到任何修复进展
这是我的控制器的代码:
var myApp = angular.module('cplanner',[]);
myApp.controller('GetItemCtrl', ['$scope', '$http', function($scope, $http) {
var itemUrl = 'http:somesite.com';
//console.log(itemUrl);
$http({url: itemUrl,
dataType: 'json',
method: 'POST',
dataType : 'json',
headers: {
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Methods": "POST, GET, OPTIONS, PATCH, DELETE",
"Access-Control-Allow-Headers": "Origin, X-Requested-With, Content-Type, Accept"
},
xhrFields: {
withCredentials: true
}}).success(function(data, status, headers, config) {
//check if the response has ok status
if(data.status == "ok"){
console.log(data.data);
$scope.items = data.data;
}
}).error(function(data, status, headers, config) {
});
}]);
我添加了标题,但它似乎无法解决我的跨来源问题。有谁能给我一些关于如何从其他服务器获得响应的评论和建议。
提前感谢。必须在服务器上启用CORS。如果您无法访问该服务器,则可能无法完成希望的操作。如果您确实有访问权限,则需要详细了解如何为编写api的任何语言启用它:)
有关更多信息,请参见此处:CORS是一种服务器解决方案-也就是说,web客户端(JS)发送到不同域(因此跨域)的第一个请求是一个选项请求-由源服务器以天气或不考虑跨域请求的方式答复,如果是,则回答:
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Methods": "POST, GET, OPTIONS, PATCH, DELETE",
"Access-Control-Allow-Headers": "Origin, X-Requested-With, Content-Type, Accept"
然后,浏览器发送另一个请求——即本应发送的实际请求。
整个机制是自动发生的。您所要做的就是在服务器上启用CORS。
要启用CORS,以下是一些有用的链接:我明白了,但我无法访问我的服务器,是否可以在htaccess中执行此操作?@caffeineshots您可以使用JSONP或其他方式吗?您是指web服务器上的htaccess还是api服务器上的htaccess?htaccess在我的本地文件夹中,会有帮助吗?出于某种原因,我不想使用jsonp。@Caffineshots不,这是一个必须在提供API的服务器上进行的服务器设置。您可以尝试从服务器调用API,然后从您自己的API向您的客户端提供相同的数据,如果他们允许(代理他们的API),我看到了。问题是我的客户端只想单击index.html文件并查看结果。你知道在这种情况下我的解决办法是什么吗?