Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Larvel 5.8:从javascript而不是浏览器调用route时忽略中间件_Javascript_Laravel_Cors - Fatal编程技术网

Larvel 5.8:从javascript而不是浏览器调用route时忽略中间件

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("

我有一个“cors”中间件,它就是这样做的

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');