You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

配置Content Security Policy提示无效源及图片加载被拦截如何解决

问题根因分析

你的两处报错均由CSP头拼接逻辑错误衍生,次要问题是资源允许列表配置不全:

  • 核心错误:不同CSP指令拼接时没有添加分隔符;,导致浏览器将img-src、frame-src指令名全部识别为default-src的源值,完全无法识别你配置的img-src、frame-src独立指令
    你当前生成的CSP头实际为:
    default-src 'self' 'unsafe-inline' cdn.jsdelivr.net *.googletagmanager.com fonts.googleapis.com cdnjs.cloudflare.com fonts.gstatic.com code.jquery.comimg-src data:frame-src youtube.com www.youtube.com
    
    浏览器会把code.jquery.comimg-src、data:frame-src都当成default-src的允许源,所以触发第一处「无效源data:frame-src」的报错;同时浏览器没有识别到独立的img-src指令,触发第二处「img-src未显式设置」的报错
  • 次要错误:img-src允许列表缺少报错中提到的图片域名ssl.gstatic.com,也没有配置'self'等站点常用图片源
  • 优化点:frame-src配置建议将不同域名拆分为独立的数组元素,符合配置逻辑避免后续维护出错
修复后的完整代码
<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;

class ContentSecurityPolicy
{
    public $resources = [
        'default-src' => [
            "'self'",
            "'unsafe-inline'",
            'cdn.jsdelivr.net',
            '*.googletagmanager.com',
            'fonts.googleapis.com',
            'cdnjs.cloudflare.com',
            'fonts.gstatic.com',
            'code.jquery.com',
        ],
        'img-src' => [
            "'self'",
            "data:",
            "ssl.gstatic.com",
        ],
        'frame-src' => [
            'youtube.com',
            'www.youtube.com',
        ],
    ];

    public function handle(Request $request, Closure $next)
    {
        $response = $next($request);

        $policyParts = [];
        foreach ($this->resources as $directive => $sources) {
            $policyParts[] = $directive . ' ' . implode(' ', $sources);
        }
        // 用分号拼接所有指令,符合CSP头标准格式要求
        $contentSecurityPolicy = implode('; ', $policyParts);

        $response->header("Content-Security-Policy", $contentSecurityPolicy);

        return $response;
    }
}

内容的提问来源于stack exchange,提问作者user17594666

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 21:24:05