我有一个静态网站托管在通过Google平台提供的google存储桶中。
该网站已经运行了大约6个月,没有出现任何问题,但是在过去的一个月里,由于“内容安全”问题,我间歇性地无法加载样式表和脚本-这导致了主要内容的出现页面显示在浏览器中,没有样式,也没有(基于Javascript)功能。断断续续的意思是它可以正常工作几个小时,然后失败几个小时。
该服务没有“网络服务器”,例如我只是从存储桶中提供静态页面-我知道Google必须拥有自己的服务器来处理此问题。无论用户使用哪种浏览器,都会发生故障,并且清除浏览器缓存无济于事,因此此问题在Google服务器端。
在浏览器中检查开发人员控制台,我可以看到网页使用的所有样式表,脚本和字体的以下问题:
> Refused to load the stylesheet XXXXXXX because it violates the > following Content Security Policy directive: "default-src 'none'". > Note that 'style-src-elem' was not explicitly set, so 'default-src' is > used as a fallback.
我认为我的“内容安全性”设置正确:
<meta http-equiv="Content-Security-Policy" content="
default-src 'self';
img-src 'self'
https://syndication.twitter.com;
font-src 'self'
https://use.fontawesome.com
https://fonts.gstatic.com
https://fonts.googleapis.com;
script-src 'self' 'unsafe-inline'
https://stackpath.bootstrapcdn.com
https://connect.facebook.net
https://platform.twitter.com
https://code.jquery.com
https://cdnjs.cloudflare.com;
style-src 'self' 'unsafe-inline'
https://stackpath.bootstrapcdn.com
https://use.fontawesome.com
https://fonts.googleapis.com;
frame-src 'self'
https://www.facebook.com
https://connect.facebook.net
https://platform.twitter.com
https://www.youtube.com;
">
这些是失败的链接,每个“外部”链接都包括与导入签名,以确保加载“真实”的东西。
<!-- Bootstrap core CSS -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
<!-- Font Awesome -->
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.2.0/css/all.css" integrity="sha384-hWVjflwFxL6sNzntih27bfxkr27PmbbK/iSvJ+a4+0owXq79v+lsFkW54bOGbiDQ" crossorigin="anonymous">
<!-- Custom fonts for this template -->
<link href='https://fonts.googleapis.com/css?family=Titillium+Web' rel='stylesheet' type='text/css'>
<link href='https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800' rel='stylesheet' type='text/css'>
任何人都可以看到我在做错什么,或者提供任何建议以使它始终如一地工作吗?
答案 0 :(得分:0)
不幸的是,目前无法在网站存储桶中以这种方式设置CSP标头,因为Cloud Storage用于网站存储桶的网络服务器可能正在为您的网站添加默认值。
有一个功能请求for this,但自上次更新以来似乎已经有一段时间了。
如果您需要在没有这些问题的情况下投放网页,可以尝试使用App引擎标准(甚至可以申请Always Free Tier)