Symfony 2.5 and Angular $http


Symfony 2.5 and Angular $http

在我使用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>