Larvel 5.8:从javascript而不是浏览器调用route时忽略中间件
我有一个“cors”中间件,它就是这样做的Larvel 5.8:从javascript而不是浏览器调用route时忽略中间件,javascript,laravel,cors,Javascript,Laravel,Cors,我有一个“cors”中间件,它就是这样做的 public function handle($request, Closure $next) { // return response()->json(['message' => 'Not Found.'], 404); if (config('app.env') !== 'production') { return $next($request) ->header("
public function handle($request, Closure $next)
{
// return response()->json(['message' => 'Not Found.'], 404);
if (config('app.env') !== 'production') {
return $next($request)
->header("Access-Control-Allow-Origin", "*")
->header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
} else {
return $next($request);
}
}
我通过以下方式将中间件添加到routes/api.php
:
<?php
// Rotte /api/v1
Route::group(['prefix' => 'v1', 'middleware' => ['cors'] ], function () {
... wrapping all /api/v1 routes
}
请使用其他标题更新您的中间件
if (config('app.env') !== 'production') {
return $next($request)
->header("Access-Control-Allow-Origin", "*")
->header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
->header('Access-Control-Allow-Headers', 'Content-Type, Authorization, X-XSRF-TOKEN, X-Requested-With');
这应该可以解决问题。告诉我们您是如何将中间件添加到路由组的。感谢您的回复,我添加了请求的infoPlease,请告诉我们您在哪里注册了
cors
作为中间件。有一个很好的包来处理此问题:您的所有代码似乎都正常,除了这些缺少的头,因此,它们可能是导致问题的原因,如果它有效,您可以尝试。哦,对不起,我的意思是“在这种情况下为什么必须使用第三个标头?”您使用jwt身份验证权限,并传递数据,因为您将传递带有请求授权标头的令牌,而对于数据,则需要X-Requested-with,Content type,让服务器知道您传递的内容类型,在本例中为application/json
。
if (config('app.env') !== 'production') {
return $next($request)
->header("Access-Control-Allow-Origin", "*")
->header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
->header('Access-Control-Allow-Headers', 'Content-Type, Authorization, X-XSRF-TOKEN, X-Requested-With');