【发布时间】:2016-12-20 02:05:13
【问题描述】:
注意:这在 Firefox 中有效,但在 Chrome 中无效。为什么?我想念什么?
当我尝试在表单中运行编辑功能时,它应该通过 AngularJS 获取数据。
var i;
var url = window.location.href;
var param = url.split("?");
param = param[param.length - 1];
var jsonUrl = "http://api.hiremein.rs/?" + param;
$(".update-book").click(function(){
i = $( this ).data('key');
});
var rest = angular.module('rest', []);
rest.controller('restCtrl', function($scope, $http) {
$(".update-book").click(function(){
setTimeout(function(){
$http.get(jsonUrl, function(req, res){
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Origin", "X-Requested-With");
res.send(
{jsonUrl}
);
})
.success(function (response) {
$scope.names = response.data[i];
});
}, 300);
});
});
执行代码时出现此错误:
XMLHttpRequest 无法加载 http://api.hiremein.rs/?page=1。请求的资源上不存在“Access-Control-Allow-Origin”标头。 Origin 'http://client.hiremein.rs' 因此不允许访问。
我也尝试添加
header("Access-Control-Allow-Origin: *");
到 client 和 API 端的index.php。
但错误并没有消失。
【问题讨论】:
-
您是否只尝试过服务器端的域? CORS 可以做 *、null 或域 (hiremein.rs)
-
如 res.header('Access-Control-Allow-Origin', 'api.hiremein.rs/');
-
尝试这样做,在 Firefox 中可以正常工作,但在 Chrome 中仍然无法正常工作。在 Chrome 中一定有办法做到这一点。
-
您不能在客户端中设置 CORS 标头(嗯,您可以,但它们会做任何有用的事情)。它们只能在您的服务器上设置以启用 CORS。服务器决定谁可以从浏览器访问它。而且,如果您在请求中放置了某些自定义标头,那么您还需要您的服务器支持使用 OPTIONS 请求进行预检。
标签: javascript php angularjs cors