在我的Chrome扩展程序中,当用户点击浏览器操作符号时,会打开一个新的(弹出窗口)窗口,其中会加载Google地图。要打开窗口,我使用以下代码段
chrome.browserAction.onClicked.addListener(function() {
chrome.windows.create({'url': 'popup.html', 'width': 500, 'height': 400 });
});
popup.html
如下所示:
<!doctype html>
<html>
<head>
<title>Popup</title>
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?sensor=true"></script>
<script src="popup.js"></script>
</head>
<body>
<div id="map-canvas" style="width:100%; height:100%"></div>
</body>
</html>
我自然遇到了内容安全策略(CSP)问题。作为解决方案,我找到了this Stackoverflow文章。但是,它并没有开箱即用。我得到了更多&#34;拒绝加载脚本......&#34; CSP错误消息。只有通过所有必需的脚本扩展CSP行,我才能最终运行:
"content_security_policy": "script-src 'self' 'unsafe-eval' https://maps.googleapis.com https://maps.gstatic.com https://mts0.googleapis.com https://mts1.googleapis.com; object-src 'self';"
现在我想知道,如果这是正确的方法。我怎么知道所需的https网址列表不会随着时间的推移而改变?我尝试过通配符(https://*/*
),但这完全被轰炸了。或许我完全使用拧干方法。
答案 0 :(得分:3)
无法保证Google地图将从哪些域加载脚本。如果您需要使用更宽松的CSP规则,它将如下所示:
script-src 'self' 'unsafe-eval' https:;
https:
表示可以从任何域加载,但必须通过SSL加载。这不是一个理想的CSP规则集,因为它更容易受到JavaScript安全问题的影响。