内容安全策略(CSP)是一项安全标准,通过控制网页可加载的资源来帮助防止跨站脚本(XSS)攻击。Mintlify 提供了默认的 CSP,可保护大多数站点。如果你在反向代理或防火墙后托管文档,并覆盖了默认的 CSP,则可能需要配置 CSP 响应头,才能确保各项功能正常运行。
以下 CSP 指令用于控制可加载的资源:
- script-src: 控制可执行哪些脚本
- style-src: 控制可加载哪些样式表
- font-src: 控制可加载哪些字体
- img-src: 控制可加载哪些图片、图标和标识
- connect-src: 控制可用于 API 调用和 WebSocket 连接的 URL
- frame-src: 控制可嵌入到 frame 或 iframe 的 URL
- default-src: 作为未显式设置时其他指令的默认回退
| 域名 | 用途 | CSP 指令 | 必需 | 
|---|
| d4tuoctqmanu0.cloudfront.net | KaTeX CSS、字体 | style-src、font-src | 必需 | 
| *.mintlify.dev | 文档内容 | connect-src、frame-src | 必需 | 
| *.mintlify.com | 控制台、API、分析代理 | connect-src | 必需 | 
| leaves.mintlify.com | 文档助手 API | connect-src | 必需 | 
| d3gk2c5xim1je2.cloudfront.net | 图标、图片、标志 | img-src | 必需 | 
| d1ctpt7j8wusba.cloudfront.net | Mint 版本与发布文件 | connect-src | 必需 | 
| mintcdn.com | 图片、网站图标(favicon) | img-src、connect-src | 必需 | 
| *.mintcdn.com | 图片、网站图标(favicon) | img-src、connect-src | 必需 | 
| api.mintlifytrieve.com | 搜索 API | connect-src | 必需 | 
| cdn.jsdelivr.net | OG 图片的表情资源 | script-src、img-src | 必需 | 
| fonts.googleapis.com | Google 字体 | style-src、font-src | 可选 | 
| www.googletagmanager.com | Google Analytics/GTM | script-src、connect-src | 可选 | 
| cdn.segment.com | Segment 分析 | script-src、connect-src | 可选 | 
| plausible.io | Plausible 分析 | script-src、connect-src | 可选 | 
| us.posthog.com | PostHog 分析 | connect-src | 可选 | 
| cdn.getkoala.com | Koala 分析 | script-src | 可选 | 
| tag.clearbitscripts.com | Clearbit 跟踪 | script-src | 可选 | 
| cdn.heapanalytics.com | Heap 分析 | script-src | 可选 | 
| chat.cdn-plain.com | Plain 聊天挂件 | script-src | 可选 | 
| chat-assets.frontapp.com | Front 聊天挂件 | script-src | 可选 | 
| browser.sentry-cdn.com | Sentry 错误跟踪 | script-src、connect-src | 可选 | 
| js.sentry-cdn.com | Sentry JavaScript SDK | script-src | 可选 | 
仅包含你使用的服务的域名。删除任何未在文档中配置的分析相关域名。
Content-Security-Policy:
default-src 'self';
script-src 'self' 'unsafe-inline' 'unsafe-eval' cdn.jsdelivr.net www.googletagmanager.com cdn.segment.com plausible.io
us.posthog.com cdn.getkoala.com tag.clearbitscripts.com cdn.heapanalytics.com chat.cdn-plain.com chat-assets.frontapp.com
browser.sentry-cdn.com js.sentry-cdn.com;
style-src 'self' 'unsafe-inline' d4tuoctqmanu0.cloudfront.net fonts.googleapis.com;
font-src 'self' d4tuoctqmanu0.cloudfront.net fonts.googleapis.com;
img-src 'self' data: blob: d3gk2c5xim1je2.cloudfront.net mintcdn.com *.mintcdn.com cdn.jsdelivr.net;
connect-src 'self' *.mintlify.dev *.mintlify.com d1ctpt7j8wusba.cloudfront.net mintcdn.com *.mintcdn.com
api.mintlifytrieve.com www.googletagmanager.com cdn.segment.com plausible.io us.posthog.com browser.sentry-cdn.com;
frame-src 'self' *.mintlify.dev;
- 在 Cloudflare 控制台,前往 Rules > Overview。
- 选择 Create rule > Response Header Transform Rule。
- 配置该规则:
- Modify response header:设置为 static
- Header name:Content-Security-Policy
- Header value:
default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' cdn.jsdelivr.net; style-src 'self' 'unsafe-inline' d4tuoctqmanu0.cloudfront.net fonts.googleapis.com; font-src 'self' d4tuoctqmanu0.cloudfront.net fonts.googleapis.com; img-src 'self' data: blob: d3gk2c5xim1je2.cloudfront.net mintcdn.com *.mintcdn.com cdn.jsdelivr.net; connect-src 'self' *.mintlify.dev *.mintlify.com d1ctpt7j8wusba.cloudfront.net mintcdn.com *.mintcdn.com api.mintlifytrieve.com; frame-src 'self' *.mintlify.dev;
 
 
- 部署该规则。
在 CloudFront 中添加一个响应标头策略:{
"ResponseHeadersPolicy": {
    "Name": "MintlifyCSP",
    "Config": {
    "SecurityHeadersConfig": {
        "ContentSecurityPolicy": {
        "ContentSecurityPolicy": "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' cdn.jsdelivr.net; style-src 'self' 'unsafe-inline' d4tuoctqmanu0.cloudfront.net fonts.googleapis.com; font-src 'self' d4tuoctqmanu0.cloudfront.net fonts.googleapis.com; img-src 'self' data: blob: d3gk2c5xim1je2.cloudfront.net mintcdn.com *.mintcdn.com cdn.jsdelivr.net; connect-src 'self' *.mintlify.dev *.mintlify.com d1ctpt7j8wusba.cloudfront.net mintcdn.com *.mintcdn.com api.mintlifytrieve.com; frame-src 'self' *.mintlify.dev;",
        "Override": true
        }
      }
    }
  }
}
vercel.json:
{
"headers": [
    {
    "source": "/(.*)",
    "headers": [
        {
        "key": "Content-Security-Policy",
        "value": "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' cdn.jsdelivr.net; style-src 'self' 'unsafe-inline' d4tuoctqmanu0.cloudfront.net fonts.googleapis.com; font-src 'self' d4tuoctqmanu0.cloudfront.net fonts.googleapis.com; img-src 'self' data: blob: d3gk2c5xim1je2.cloudfront.net mintcdn.com *.mintcdn.com cdn.jsdelivr.net; connect-src 'self' *.mintlify.dev *.mintlify.com d1ctpt7j8wusba.cloudfront.net mintcdn.com *.mintcdn.com api.mintlifytrieve.com; frame-src 'self' *.mintlify.dev;"
        }
      ]
    }
  ]
}
- 打开浏览器的开发者工具。
- 切换到 Console 选项卡。
- 查找以下前缀的错误信息:
- Content Security Policy: The page's settings blocked the loading of a resource
- Refused to load the script/stylesheet because it violates the following Content Security Policy directive
- Refused to connect to because it violates the following Content Security Policy directive