我尝试向具有基本身份验证的服务器发送GET RESTful请求。我编写了以下代码来完成这项任务:
module.controller("MainCtrl", ['$scope', '$http', function($scope, $http) {
$http.get('http://192.168.10.15:8080/web/services/api/records/20420?_type=json', {
headers: {
'Authorization' : 'Basic username:password'}
})
.success(function(response) {
console.log("my success");
$scope.values = response;
})
}]
);
处理请求时,浏览器控制台上会显示给定的错误:
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource on http://192.168.10.15:8080/web/services/api/records/20420?_type=json. (Reason: header CORS 'Access-Control-Allow-Origin' missing).
任何想法?
答案 0 :(得分:2)
阅读本页http://amodernstory.com/2014/12/27/using-cors-headers-with-java-example/,您应该注意这一段“在编写自己的过滤器时要记住的主要思想是,在进行任何AJAX调用之前。浏览器向服务器发送OPTIONS AJAX请求。服务器需要使用所需的权限回复此OPTIONS调用。“:D
答案 1 :(得分:0)
您的服务器(http://192.168.10.15:8080/)不允许您从外部(或只是您的服务器原始服务器)发送请求。
您必须在服务器上允许CORS(跨源资源共享), 在服务器配置中有几种方法可以做到。
答案 2 :(得分:0)
如果您正在使用node.js&表达你可以允许这样的CORS:
app.use(function (req, res, next) {
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE');
next();
});
在快速配置文件中。