当我使用我使用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”标头。 我不明白为什么这不起作用。
答案 0 :(得分:2)
它的CORS问题首先通过
启用角度应用上的CORSmyApp.config(['$httpProvider', function($httpProvider) {
$httpProvider.defaults.useXDomain = true;
delete $httpProvider.defaults.headers.common['X-Requested-With'];
}
]);
支持CORS的服务器必须响应具有多个访问控制头的请求:
• Access-Control-Allow-Origin *
答案 1 :(得分:1)
在发送跨域请求之前,有一个使用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>