我有域名 sub.example.com
使用配置的重定位:
RestangularProvider.setDefaultHeaders({
'Content-Type': 'application/json',
'X-Requested-With': 'XMLHttpRequest'
});
RestangularProvider.setDefaultHttpFields({
'withCredentials': true
});
然后我正在通过以下方式 build 其他工厂:
return Restangular.withConfig(function(RestangularProvider) {
RestangularProvider.setBaseUrl('http://api.example.com');
});
而且,显然,得到错误 请求的资源上不存在“Access-Control-Allow-Origin” header 。起源' http://sub.example.com ' 因此不允许访问。 .我应该如何配置服务器/客户端以获取有效的跨域请求?
//更新
我在后端使用 Yii 并发送下一个 header
header('Access-Control-Allow-Origin: *', true);
最佳答案
我找到了解决方案。
起初,当使用凭证时 - 我们不能使用 * 作为 Access-Control-Allow-Origin。
然后,XHR 发送应妥善处理的 OPTIONS 请求并发送 CORS header 。
// scheme required, here can be multiple origins concatenated by space if using credentials
header('Access-Control-Allow-Origin: http://sub.example.com');
header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE');
header('Access-Control-Allow-Headers: Accept, X-Requested-With');
// without credentials we can use * for origin
header('Access-Control-Allow-Credentials: true');
header('HTTP/1.1 200 OK', true);
那么我们就可以简单的使用跨域ajax请求了。
关于angularjs - 重新定义的跨域请求。我做错了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22526903/