0

完整的错误信息:

从源“ http://localhost:3000 ”访问“ https://api_url ”处的 XMLHttpRequest已被 CORS 策略阻止:预检中的 Access-Control-Allow-Headers 不允许请求标头字段 x-requested-with回复。

我无法解决这个 cors 问题。

我的Vue组件代码:

test(){
  axios.get("https://api_url")
  .then(response => {
        this.data = response.data.data;
  });
}

我还创建了一个中间件并将其添加到受保护的数组$middlewareKernel.php

<?php

namespace App\Http\Middleware;

use Closure;

class Cors
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        return $next($request)
            ->header('Access-Control-Allow-Origin', '*')
            ->header('Access-Control-Allow-Credentials', 'true')
            ->header('Access-Control-Allow-Methods', 'GET, HEAD, OPTIONS, POST, PUT')
            ->header('Access-Control-Max-Age', '3600')
            ->header('Access-Control-Allow-Headers', 'Origin, Accept, Content-Type, X-Requested-With');
    }
}
4

2 回答 2

0

使用这个包,它会解决你的问题 https://github.com/barryvdh/laravel-cors

于 2019-11-05T22:59:45.093 回答
0

像@Mohammed Aktaa 建议的那样使用这个包:https ://github.com/barryvdh/laravel-cors

HandleCors中间件添加到您的api $middlewareGroup数组中app/Http/Kernel.php

'api' => [
    // ...
    \Barryvdh\Cors\HandleCors::class,
],

发布包的配置:

$ php artisan vendor:publish --provider="Barryvdh\Cors\ServiceProvider"

编辑配置以将 CORS_ORIGIN 环境变量用于允许的来源:

'allowedOrigins' => [env('CORS_ORIGIN', '')],

在您的 .env 文件中,为您的本地来源添加一个条目:

CORS_ORIGIN="http://localhost:3000"
于 2019-11-06T05:54:15.167 回答