我不得不在Kernel.php
文件中注释以下行,以避免Laravel发送access-control-allow-origin
标头:
//\Fruitcake\Cors\HandleCors::class,
这似乎完成了API调用,浏览器在其中显示has been blocked by CORS policy
消息。
但是,我已经在指向我的测试环境的随机页面中测试了以下代码,并且javascript文件已正确导入:
var script = document.createElement('script')
script.setAttribute('src', 'http://gdpr.test/js/seifti_cookie_bot')
script.setAttribute('type', 'application/javascript')
document.head.appendChild(script)
/js/seifti_cookie_bot
是web.php路由文件中任何中间件组之外的路由。
我的解决方法 我已经用下面的代码创建了一个中间件并将其应用于我想保护的那些路由,就我所测试的而言,它的工作是可行的,但是我不知道这是否是最好的方法?
if(!isset($_SERVER['HTTP_REFERER']))
return abort('403');
$url = parse_url($_SERVER['HTTP_REFERER']);
if($_SERVER['HTTP_HOST'] !== $url['host'])
return abort('403');
return $next($request);