我目前正在通过visual studio构建一个apache cordova移动应用程序,并且遇到了尝试通过我的应用程序中的外部脚本运行小部件的问题。这些脚本在浏览器模拟器中运行良好,但是一旦我尝试在苹果设备上运行它们,脚本就不会加载。我已经研究过这个问题,发现它通常与内容安全策略有关,我在下面附上这些政策来帮助找出问题所在。
<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' http://* 'unsafe-inline'; script-src 'self' * 'unsafe-inline' 'unsafe-eval'; img-src 'self' * 'unsafe-inline' 'unsafe-eval'" />
为什么这些小部件没有加载到我的应用程序中可能还有什么问题呢?这些是我试图在我的应用程序中加载的脚本,供您参考。
<script type="text/javascript" src="https://rf.revolvermaps.com/0/0/8.js?i=5tfq2n8w5rc&m=0c&c=cbb677&cr1=ffffff&f=calibri&l=0&cw=ffffff&cb=450084" async="async"></script>
<script type="text/javascript" src="https://rf.revolvermaps.com/0/0/0.js?i=5gbey55pbu3&d=2&p=1&b=1&w=293&g=1&f=calibri&fs=12&r=0&c0=362b05&c1=450084&c2=000000&ic0=0&ic1=0" async="async"></script>
答案 0 :(得分:0)
你有在线资源的白名单吗?
更好的方法是嵌入这些资源。加载在线脚本真的很不安全。服务器可以发送js,并通过cordova api访问您的设备。
https://cordova.apache.org/docs/de/latest/guide/appdev/whitelist/
答案 1 :(得分:0)
脚本和链接标记中的src和href应该有一个方案(http或https),否则,当Cordova找到//时,它将使用它的默认方案,文件:。
将http:或https:添加到您的所有脚本和链接标记中,然后它应该可以正常工作。
示例:
<script type="text/javascript" src="http://rf.revolvermaps.com/0/0/8.js?i=5tfq2n8w5rc&m=0c&c=cbb677&cr1=ffffff&f=calibri&l=0&cw=ffffff&cb=450084" async="async"></script>