【发布时间】:2018-10-31 22:12:33
【问题描述】:
我是 vue 新手。对于 ajax 请求,我使用 axios,对于后端,我使用 Laravel。每当我发送 POST 和 GET 请求时,它都可以正常工作。但是,在尝试发送 PUT 请求时,预检响应 vue-laravel 应用程序中的 Access-Control-Allow-Methods 不允许其显示方法 PUT。我在 Stackoverflow 和 github 中阅读了很多答案,但没有一个对我有用。
这是客户端代码:
axios.put('http://127.0.0.1:8000/api/photo/6', this.photo, { headers: getHeader() })
.then(response => {
console.log(response.data.message);
}).catch(err => {
this.errors = err.response.data.errors;
});
这里是 CROSS 中间件代码:
//allowed client
//now only for localhost vue cli
$domains = ['http://localhost:8080'];
if(isset($request->server()['HTTP_ORIGIN'])){
$origin = $request->server()['HTTP_ORIGIN'];
if(in_array($origin, $domains)){
header('Access-Control-Allow-Origin: '.$origin);
header('Access-Control-Allow-Headers: Origin, Content-Type, Authorization');
}
}
return $next($request);
【问题讨论】:
-
这是您的服务器配置造成的
-
仔细看看你的错误,它提到了
Access-Control-Allow-Methods,现在看看你的服务器代码,你错过了发送这个标题的一行 -
我还将这一行添加到我的 CROS 中间件标头中('Access-Control-Allow-Methods: ', ''POST, GET, PUT, DELETE, OPTIONS'');结果还是一样