【问题标题】:Symfony 2.5 and Angular $httpSymfony 2.5 和 Angular $http
【发布时间】:2014-10-28 02:57:42
【问题描述】:

当我将 $http 与我使用 Symfony 编写的 API 一起使用时,我遇到了一些问题。当我在服务器端使用 $http.get 时,我在响应中添加了一个标头:Access-Control-Allow-Origin,一切正常,我可以从服务器获取所需的数据。但是当我使用 $http.post 并添加这个 header 时,没有任何效果。

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

【问题讨论】:

    标签: php angularjs symfony


    【解决方案1】:

    这是一个 CORS 问题,首先通过

    在您的 Angular 应用程序上启用 CORS
    myApp.config(['$httpProvider', function($httpProvider) {
            $httpProvider.defaults.useXDomain = true;
            delete $httpProvider.defaults.headers.common['X-Requested-With'];
        }
    ]);
    

    支持 CORS 的服务器必须响应带有多个访问控制标头的请求:

    • Access-Control-Allow-Origin * 
    

    【讨论】:

    • 我成功了,但没有帮助。我仍然有同样的问题。
    • 您的服务器是否响应了我提到的那个标头?
    • 在我发送响应的操作中,我有以下代码 $response = new JsonResponse(); $response->headers->set('Access-Control-Allow-Origin','*');返回 $response;
    • 尝试使用 chrome 网络调试请求,并确保您在没有 X-Requested-With 的情况下发送的内容以及您的服务器使用 Access-Control-Allow-Origin * 响应的内容 *
    • 我不知道为什么在请求中我有这个请求方法:OPTIONS 状态代码:405 方法不允许并且响应返回允许:GET、HEAD、POST
    【解决方案2】:

    在发送跨域请求之前,有一个使用 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>
    

    【讨论】:

    • 我应该添加到使用静态文件还是使用 API 的主机中?
    • 我将此行添加到我的 htaccess 文件中尝试了不同的组合,但仍然无法正常工作。它会杀了我)
    • 它发送 OPTIONS 请求而不是 POST 请求。我为我的 Apache 制作了 a2enmod 标头,allowmethods,但出现新错误:XMLHttpRequest 无法加载 api.host.loc/app_dev.php/add。 HTTP 状态码 405 无效
    • 科幻方面一切都好吗?您的操作允许使用正确的方法吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-24
    • 2015-01-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多