Content-security-policy元标记允许web套接字



情况:被content-security-policy元标签阻止的phonegap serve自动加载

添加内容安全策略防止自动重新加载phonegap serve实用程序。这是建立在cordova serve之上,但自动重新加载文件编辑应用程序。在index.html中注入socket.io起作用。我应该在我的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可能不会阻止它。

要将web套接字添加到安全策略中,请将web套接字协议(ws:)添加到connect-src指令中。

connect-src 'self' ws:;

可选地,您可以将ws:协议添加到default-src并忽略connect-src。下面是一个有用的示例,它支持大多数本地开发需求,同时仍然提供有用的安全约束。

<meta http-equiv="Content-Security-Policy"
      content="default-src 'self' data: gap: ws: ssl.gstatic.com 'unsafe-inline';">

内容安全策略的文档非常好,而且很容易阅读。

如果你的websocket在同一主机/端口上,那么connect-src 'self'default-src 'self' 应该是足够的-假设浏览器已经实现了自https://github.com/w3c/webappsec-csp/issues/7 (PR)中CSP规范更改以来的更改。

我有一个类似的问题。这将影响Cordova 5.x.x。参见Nic Raboy的博客文章https://blog.nraboy.com/2015/05/whitelist-external-resources-for-use-in-ionic-framework/

我不得不稍微调整一下meta标签来让我的websocket也连接起来。

 <meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src * 'unsafe-inline' 'unsafe-eval'">

相关内容

  • 没有找到相关文章

最新更新