我试图把'数据到我的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请求。
答案 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');