我有一个 Express 服务器,它的配置如下:
server.use(csp({
directives: {
defaultSrc: ["'self'"],
scriptSrc: ["'self'", '*.google-analytics.com'],
imgSrc: ["'self'", '*.google-analytics.com'],
connectSrc: ["'none'"],
styleSrc: ["'self'", "'unsafe-inline'", 'maxcdn.bootstrapcdn.com'], // Remove unsafe-inline for better security
fontSrc: ["'self'"],
objectSrc: ["'self'"],
mediaSrc: ["'self'"],
frameSrc: ["'self'"]
}
}));
我的根目录中还有一个包含以下内容的browserconfig.xml文件:
<?xml version="1.0" encoding="utf-8"?>
<browserconfig>
<msapplication>
<tile>
<square70x70logo src="/mstile-70x70.png"/>
<square150x150logo src="/mstile-150x150.png"/>
<square310x310logo src="/mstile-310x310.png"/>
<wide310x150logo src="/mstile-310x150.png"/>
<TileColor>#da532c</TileColor>
</tile>
</msapplication>
</browserconfig>
如您所见,它是一个没有图像数据的简单 XML 文件,更不用说 SVG。然而,当我尝试点击https://www.shandillia.com/browserconfig.xml时,控制台中会出现以下内容:
拒绝加载图像 'data:image/svg+xml,http://www.w3.org/2000/svg' fill='%23909090' width='10' height='10'>' 因为它违反了遵循内容安全策略指令:“img-src 'self' *.google-analytics.com”。
请注意,XML 文件的内容也显示在浏览器屏幕中。只是控制台错误让我感到困惑。我的服务器抱怨的图像文件在哪里?
PS:有没有办法在我的指令中只允许这个特定的 SVG(不管它是什么,假设它是安全且无恶意的,来自像 www.w3.org 这样的合法来源) ?imgSrc
我尝试修改我的server.csp()
,但没有奏效:
server.use(csp({
directives: {
defaultSrc: ["'self'"],
scriptSrc: ["'self'", '*.google-analytics.com'],
imgSrc: ["'self'", 'data:', '*.google-analytics.com'],
connectSrc: ["'none'"],
styleSrc: ["'self'", "'unsafe-inline'", 'maxcdn.bootstrapcdn.com'], // Remove unsafe-inline for better security
fontSrc: ["'self'"],
objectSrc: ["'self'"],
mediaSrc: ["'self'"],
frameSrc: ["'self'"]
}
}));
这个神秘物体是什么?如何才能让它不再打扰浏览器?