CORS easyway

时间:2015-04-24 14:21:41

标签: angularjs cors laravel-5

我试图把'数据到我的Laravel 5服务器上运行在localhost上的一个网页也是本地主机,但来自其他服务器软件(nodejs)。但我得到这个错误:

XMLHttpRequest cannot load http://localhost:8888/data/. Method PUT is not allowed by Access-Control-Allow-Methods.

创建put请求的代码是angularjs,如下所示:

 return $http.put("http://localhost:8888/data/", { obj1: a, obj2: b });

绕过CORS最简单的方法是什么?安全性没有问题。 使用chrome中的postman插件,我可以发送put请求。

3 个答案:

答案 0 :(得分:2)

这是我为cors设置的laravel。

我用这个设置创建了一个http.php配置文件:     

return [
    'cors' => [
        'origin' => '*',
        'methods' => 'OPTIONS, GET, POST, PUT, PATCH, DELETE',
        'headers' => 'X-Requested-With, Content-Type, Authentication-Token',
    ],
];

在应用程序启动时在某处运行此代码:     

if ( ! App::runningInConsole()) {
    header('Access-Control-Allow-Origin: ' . Config::get('http.cors.origin'));
    header('Access-Control-Allow-Credentials: true'); // to be honest i've never used this option, but it looks like you'll need it

    // handle preflight requests
    App::before(function() {
        if (Request::getMethod() === 'OPTIONS') {
            return new Response('', 200, [
                'Access-Control-Allow-Methods' => Config::get('http.cors.methods'),
                'Access-Control-Allow-Headers' => Config::get('http.cors.headers'),
            ]);
        }
    });
}

答案 1 :(得分:1)

邮差不使用CORS。

要启用CORS(在客户端),请在您的看跌期权中添加:{ withCredentials: true }

 return $http.put("http://localhost:8888/data/", { obj1: a, obj2: b }, { withCredentials: true });

注意:您可以在服务器端启用它们,具体取决于您的服务器应用程序。

答案 2 :(得分:1)

它似乎不是一个角度问题。您应该尝试在PHP上启用CORS:

// Enable CORS 
// In production, replace * with http://yourdomain.com 
header("Access-Control-Allow-Origin: *");
header('Access-Control-Allow-Credentials: true');