用于允许 Web 套接字的内容安全策略元标记
content-security-policy meta tag for allowing web socket
情况:phonegap serve
的自动重新加载被 content-security-policy 元标记阻止
添加内容安全策略可防止自动重新加载 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:*">
但是在打开时,设备一直显示 "Connecting to device" 并且设备上没有收到事件。
另请注意,它开始着手删除此元标记,这意味着 cordova-plugin-whitelist
可能不会阻止它。
我遇到了类似的问题。这会影响 Cordova 5.x.x。请参阅 Nic Raboy https://blog.nraboy.com/2015/05/whitelist-external-resources-for-use-in-ionic-framework/
的博客 post
我不得不稍微调整元标记以使我的 websocket 也能连接。这是它的样子;
<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src * 'unsafe-inline' 'unsafe-eval'">
要将 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';">
content security policy 的文档非常好并且易于阅读。
如果您的 websocket 在同一个 host/port 上,那么 connect-src 'self'
或 default-src 'self'
应该 就足够了 - 假设 browsers have implemented the changes since the CSP spec changes in https://github.com/w3c/webappsec-csp/issues/7 (PR).
情况:phonegap serve
的自动重新加载被 content-security-policy 元标记阻止
添加内容安全策略可防止自动重新加载 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:*">
但是在打开时,设备一直显示 "Connecting to device" 并且设备上没有收到事件。
另请注意,它开始着手删除此元标记,这意味着 cordova-plugin-whitelist
可能不会阻止它。
我遇到了类似的问题。这会影响 Cordova 5.x.x。请参阅 Nic Raboy https://blog.nraboy.com/2015/05/whitelist-external-resources-for-use-in-ionic-framework/
的博客 post我不得不稍微调整元标记以使我的 websocket 也能连接。这是它的样子;
<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src * 'unsafe-inline' 'unsafe-eval'">
要将 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';">
content security policy 的文档非常好并且易于阅读。
如果您的 websocket 在同一个 host/port 上,那么 connect-src 'self'
或 default-src 'self'
应该 就足够了 - 假设 browsers have implemented the changes since the CSP spec changes in https://github.com/w3c/webappsec-csp/issues/7 (PR).