【发布时间】:2017-04-27 09:42:08
【问题描述】:
所以我制作了一个 phonegap 应用程序,它使用 socket.io 来做一些事情。
我有以下内容安全策略 (CSP)
<meta http-equiv="Content-Security-Policy" content="
default-src * data: blob: ws: wss:;
style-src * 'unsafe-inline';
script-src * 'unsafe-inline' 'unsafe-eval';
connect-src * ws: wss:;">
当我在 safari / iOS 上启动应用程序时,我收到以下错误:
Refused to connect to ws://10.0.1.63:3000/socket.io/?EIO=3&transport=websocket&sid=xTaMJwP3rVy3UnIBAAAi
because it appears in neither the connect-src directive nor the default-src directive of the Content Security Policy.
与:
SecurityError (DOM Exception 18): The operation is insecure.
具有相同 CSP 的相同应用在 Chrome/Android 上运行良好,但在 Safari/iOS 上却不行。
我认为这与:
a refined content security policy (WebKit)
似乎出现了很多资源:
- The Lounge fails to work over https due to Content Security Policy enforcement in Safari v10
- request isn't sent on iOS 10.0
为什么会说“拒绝连接到以 ws 开头的 URL:”,因为它既没有出现在 Content-Security-Policy 的 connect-src 指令中,也没有出现在 Content-Security-Policy 的 default-src 指令中,即使两者都提到了?
好的,safari / iOS 在这方面比 chrome / Android 更严格,一切都很好,但它仍然需要让我允许连接通过。这对于应用程序开发人员来说真是令人沮丧!解决方案?
编辑: 在 bugs.webkit.org 上做了一个错误报告:https://bugs.webkit.org/show_bug.cgi?id=165754
【问题讨论】:
标签: ios cordova security webkit content-security-policy