Symfony 2.5和Angular $ http

时间:2014-09-03 14:39:32

标签: php angularjs symfony

当我使用我使用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”标头。 我不明白为什么这不起作用。

2 个答案:

答案 0 :(得分:2)

它的CORS问题首先通过

启用角度应用上的CORS
myApp.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>