[英]“No 'Access-Control-Allow-Origin' header is present on the requested resource” error when sending request to Jawbone UP API
[英]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.