#laravel #content-security-policy
#ларавель #контент-политика безопасности
Вопрос:
Я решил попробовать использовать contentSecurityPolicy, кажется, все работает нормально, но изображения перестали загружаться, я получаю эту ошибку
URL-адрес запроса: данные:изображение/jpeg;base64
Что мне нужно добавить в свой ContentSecurityPolicy.php файл, чтобы избежать этой ошибки?
Это то, что у меня есть сейчас
lt;?php namespace AppHttpMiddleware; use Closure; use IlluminateHttpRequest; class ContentSecurityPolicy { public $resources = [ 'default-src' =gt; [ "'self'", "'unsafe-inline'", 'cdnjs.cloudflare.com', 'fonts.gstatic.com', 'code.jquery.com', ], ]; public function handle(Request $request, Closure $next) { $response = $next($request); $contentSecurityPolicy = ''; foreach ($this-gt;resources as $key =gt; $values) { $contentSecurityPolicy .= $key . ' ' . implode(' ', $values); } $response-gt;header("Content-Security-Policy", "default-src $contentSecurityPolicy"); return $response; } }
Ответ №1:
Он точно сообщил вам, какого типа заголовка в нем не хватает. Попробуйте добавить data:
в свой массив. Но вы должны рассмотреть возможность использования этого реквизита только для img-src
. Потому что разрешение data:
сценариев и т. Д. Не является хорошей идеей при добавлении CSP.
public $resources = [ 'default-src' =gt; [ "'self'", "data:", "'unsafe-inline'", 'cdnjs.cloudflare.com', 'fonts.gstatic.com', 'code.jquery.com', ], ];
Комментарии:
1. Я пытался сделать это так
"img-src 'self' data:"
, кажется, все работает2. но теперь у меня другая проблема, я также загружаю видео с YouTube с помощью iframe, и теперь эта политика безопасности ругается на это
Request URL: https://www.youtube.com/iframe_api
3. помог
frame-src youtube.com www.youtube.com