将Cordova 5.0.0 Google地图与内容安全策略结合使用

Naz*_*gan 5 android google-maps cordova

我正在使用Cordova 5.0.0构建Cordova Application for Android.我使用没有插件的谷歌地图,它必须没有插件.我使用白名单插件包含此脚本和元标记.also Cordova.

  <!-- Meta tag -->
<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'">
  
   <!-- Google Maps-->
 <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?sensor=true"></script>
Run Code Online (Sandbox Code Playgroud)

它给了我这个错误:

 Refused to load the script 'https://maps.googleapis.com/maps/api/js?sensor=true' because it violates the following Content Security Policy directive: "script-src 'self' 'unsafe-inline' 'unsafe-eval'".
Run Code Online (Sandbox Code Playgroud)

Ita*_*aia 12

尝试使用以下content-security-policy:

<meta http-equiv="Content-Security-Policy" content="
        default-src 'self' data: gap:
            https://ssl.gstatic.com;
        script-src 'self' 'unsafe-inline' 'unsafe-eval'
            https://*.gstatic.com https://*.googleapis.com;
        style-src 'self' 'unsafe-inline';
        media-src *">
Run Code Online (Sandbox Code Playgroud)

谷歌地图需要为'script-src定义的规则,如'unsafe-inline''unsafe-eval'.; )

  • 这比接受的答案要好得多,因为它不会使内容安全策略保持开放.您还可能需要在脚本-src中添加"https://maps.googleapis.com/ https://maps.google.com/". (2认同)

小智 3

尝试这个块来消除该错误

<meta http-equiv="Content-Security-Policy" content="
default-src 'self' data: gap:
    *;
script-src 'self' 'unsafe-inline' 'unsafe-eval'
    *;
style-src 'self' 'unsafe-inline' 'unsafe-eval'
    *;
media-src 'self' 'unsafe-inline' 'unsafe-eval'
    *;
img-src 'self' 'unsafe-inline' 'unsafe-eval'
    *;
connect-srv 'self' 'unsafe-inline' 'unsafe-eval'
    *
">
Run Code Online (Sandbox Code Playgroud)

  • 这不是一个好主意,因为它使内容安全策略完全开放,这有点像关闭防火墙而不是打开您需要的一个端口。请参阅下面 Italo Maia 的回答以获得更安全的答案。 (5认同)