情况:内容安全策略元标记
阻止phonegap serve
的自动重载
添加内容安全策略会阻止自动重新加载phonegap serve
实用程序。这是建立在cordova serve
之上,但在文件编辑时自动重新加载应用程序。它的工作原理是在socket.io
中注入index.html
。我应该在我的CSP元标记中指定哪些内容允许套接字连接到我的笔记本电脑。
这是我当前的CSP元标记:
<meta http-equiv="Content-Security-Policy" content="default-src 'self' 192.168.0.100 * ws:* ; connect-src ws://192.168.0.100 ws:*">
然而,在打开时,设备会一直显示“正在连接设备”,而不会在设备上收到事件。
另请注意,它开始处理删除此元标记,这意味着cordova-plugin-whitelist
可能无法阻止它。
答案 0 :(得分:9)
要将Web套接字添加到安全策略,请将web套接字协议(ws :)添加到connect-src指令。
connect-src 'self' ws:;
或者,您可以将ws:protocol添加到default-src并省略connect-src。这是一个有用的示例,可以满足大多数本地开发需求,同时仍然提供有用的安全约束。
<meta http-equiv="Content-Security-Policy"
content="default-src 'self' data: gap: ws: ssl.gstatic.com 'unsafe-inline';">
content security policy的文档非常好且易于阅读。
答案 1 :(得分:0)
我遇到了类似的问题。这会影响Cordova 5.x.x.请参阅Nic Raboy https://blog.nraboy.com/2015/05/whitelist-external-resources-for-use-in-ionic-framework/
撰写的这篇博客文章我不得不稍微调整元标记以使我的websocket连接。这就是看起来的样子;
<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src * 'unsafe-inline' 'unsafe-eval'">
答案 2 :(得分:0)
如果您的websocket网址来自同一来源,则connect-src 'self'
或default-src 'self'
都应足够-假设browsers have implemented the changes由于CSP规范在https://github.com/w3c/webappsec-csp/issues/7中发生了变化({{ 3}})。