繁体   English   中英

我正在尝试向公共API发出GET请求,但是我没有在请求的资源上出现“ Access-Control-Allow-Origin”标头

[英]I'm trying to make a GET request to a public API, however, I get No 'Access-Control-Allow-Origin' header is present on the requested resource

我实际上只是创建了一个新项目,并完成了一条路线:

Route::get('/getSummoner', 'RiotController@getSummoner');

执行此功能:

public function getSummoner(){

$get = file_get_contents("https://na1.api.riotgames.com/lol/summoner/v4/summoners/by-name/RiotSchmick?api_key=");
$result = json_decode($get);

return response()->json([
    'result' => $result,
], 201);

}

在前端,我得到以下错误:

Access to XMLHttpRequest at 'url' from origin 'http://localhost:8080' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

我了解到,当我向与页面所在页面不同的域发出请求时会发生这种情况,但是由于该API不是我的,因此我无法真正从同一域发出请求,可以吗?

该消息表明他们的API不允许您的网站访问它。 它可能允许您通过邮递员访问它,通过URL或其他直接方法直接访问网站...但是您需要使用Access-Control-Allow-Origin标头来专门允许您的网络域(在这种情况下,在您的内部)才能访问它。

为了安全起见,默认情况下在任何站点中都禁用CORS。 您需要安装barryvdh / laravel-cors才能使用CORS。

composer require barryvdh/laravel-cors

一旦安装,您需要在终端/命令提示符下运行它

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

然后在您的中间件组中添加HandleCors,在您的情况下,将其添加到api中间件中

    protected $middlewareGroups = [
    'web' => [
       // ...
    ],

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM