我是vue的新人。对于ajax请求,我使用的是axios,对于后端,我使用的是Laravel。每当我发送POST和GET请求时,它都可以正常工作。但是在尝试发送 PUT 请求时,预检响应vue-laravel App中的Access-Control-Allow-Methods不允许显示方法PUT。我在Stackoverflow和github上读过很多答案但是没有一个能为我工作。
以下是客户端代码:
KafkaUtils.createDirectStream[String, String](
ssc,
PreferConsistent,
Subscribe[String, String](Seq(metaInfoTopic), metaInformationKafkaParamas)
)
这是CROSS中间件代码:
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;
});
答案 0 :(得分:0)
特定的GET,HEAD和POST HTTP请求不会触发CORS预检OPTIONS检查。它们被称为简单请求。它们只发送HTTP头的子集。任何其他附加标头,如Authorization标头(想想JWT认证),都会触发预检OPTIONS请求。有关详细信息,请参阅https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS
我认为最简单的方法是使用后端的laravel-cors包(参见https://github.com/barryvdh/laravel-cors)。
在进行开发时,您可以通过将allowedOrigins,allowedHeaders和allowedMethods设置为*来实现非常宽松。稍后,在测试和随后的生产过程中,您应该将其调整为更严格。到那时,您将拥有更好的CORS概念,然后您可以完全根据您的需求进行配置。
答案 1 :(得分:0)
在后端尝试: 应用程序/ HTTP /中间件/ Cors.php
public function handle($request, Closure $next)
{
return $next($request)
->header('Access-Control-Allow-Origin', '*')
->header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE,
OPTIONS');
}
app / Http / Kernel.php $ routedMiddleware array add
'cors' => \App\Http\Middleware\Cors::class,
路线/ api.php Route :: group(['middleware'=>'cors'],function(){
Route::put('/v1/employees', 'Employees@store');
});