我的设置如下:我有一个Angular前端和一个Laravel后端。 在Angular前端中,我使用ng2-pdf-viewer。 (目前是localhost,将来会有多个域访问所有相同的API)
当我尝试从API网址显示PDF时,出现CORS错误:
通过CORS策略阻止从原点“ https://differentURL/storage/foo/bar.pdf”到“ http://localhost:4200”的访存:所请求的资源上没有“ Access-Control-Allow-Origin”标头。如果不透明的响应满足您的需求,请将请求的模式设置为“ no-cors”以在禁用CORS的情况下获取资源。
我已经在laravel中实现了中间件来解决此问题,但没有成功。看起来像这样:
public function handle($request, Closure $next)
{
return $next($request)
->header('Access-Control-Allow-Origin', '*')
->header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS')
->header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, X-Token-Auth, Accept, Authorization')
->header('Access-Control-Allow-Credentials', true);
}
在“ Kernel.php”中,我添加了以下内容:
protected $middleware = [
\App\Http\Middleware\Cors::class,
]
protected $routeMiddleware = [
'cors' => \App\Http\Middleware\Cors::class,
]
“ api.php”看起来像这样:
Route::group(['middleware' => ['cors', 'jwt.verify']], function() {
Route::get('getPDF', 'FileController@getPDF');
});
不幸的是,它不起作用:-(