在我使用Symfony编写的API中使用$http时,我遇到了一些问题。当我在服务器端使用$http.get时,我会在响应中添加一个标题:Access Control Allow Origin,一切正常,我可以从服务器获取所需的数据。但是当我使用$http.post并添加这个头时,什么都不起作用。
$http.post('http://myhost.loc/posts', {data:'Test string'}).success(function(data, status){
console.log(data);
}).error(function(data, status){
console.log(status);
});
我得到一个错误:选项http://myhost.loc/posts和请求的资源上不存在"Access Control Allow Origin"标头。我不明白为什么这不起作用。
这是一个CORS问题首先通过在您的角度应用程序上启用CORS
myApp.config(['$httpProvider', function($httpProvider) {
$httpProvider.defaults.useXDomain = true;
delete $httpProvider.defaults.headers.common['X-Requested-With'];
}
]);
支持CORS的服务器必须用几个访问控制头来响应请求:
• Access-Control-Allow-Origin *
在发送跨域请求之前,有一个使用OPTIONS方法发送的飞行前请求。飞行前请求的目的是检查资源是否可到达
你可以在你的apache.htaccess 中尝试一下
<ifModule mod_headers.c>
Header always set Access-Control-Allow-Origin: "*"
Header always set Access-Control-Allow-Methods "POST, GET, PUT, DELETE, OPTIONS"
Header always set Access-Control-Allow-Headers "origin, x-requested-with, content-type"
</ifModule>