iOS拒绝连接,因为它既不出现在connect src指令中,也不出现在内容安全策略的默认src指令中
因此,我制作了一个phonegap应用程序,它使用socket.io做一些事情。iOS拒绝连接,因为它既不出现在connect src指令中,也不出现在内容安全策略的默认src指令中,ios,cordova,security,webkit,content-security-policy,Ios,Cordova,Security,Webkit,Content Security Policy,因此,我制作了一个phonegap应用程序,它使用socket.io做一些事情。 我有以下内容安全策略(CSP) 以及: 使用相同CSP的同一应用程序在Chrome/Android上运行良好,但在Safari/iOS上运行不好。 我认为这与: 似乎出现了很多资源: 为什么说“拒绝连接到”URL以ws开头:“因为它既不出现在内容安全策略的connect src指令中,也不出现在内容安全策略的default src指令中,即使两者都提到了它 好吧,safari/iOS在这方面比chrome
我有以下内容安全策略(CSP) 以及: 使用相同CSP的同一应用程序在Chrome/Android上运行良好,但在Safari/iOS上运行不好。
我认为这与:
似乎出现了很多资源:
在bugs.webkit.org上做了一个bug报告:好吧,这有点愚蠢,但好吧,我会保留这个答案,这样未来的人们可以看到它,而不必处理这个问题 我做错的是:
我的头如下:
<head>
<meta charset="utf-8" />
<!--<meta http-equiv="Content-Security-Policy"
content="default-src *; style-src 'self' http://* 'unsafe-inline'; script-src 'self' http://* 'unsafe-inline' 'unsafe-eval'" />-->
<meta http-equiv="Content-Security-Policy" content="
default-src * data: blob: ws: wss: gap://ready file://*;
style-src * 'unsafe-inline';
script-src * 'unsafe-inline' 'unsafe-eval';
connect-src * ws: wss:;">
<meta name="format-detection" content="telephone=no" />
<meta name="msapplication-tap-highlight" content="no" />
<meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width" />
<meta http-equiv="Content-Security-Policy" content="default-src * 'unsafe-inline'; style-src 'self' 'unsafe-inline'; media-src"/>
<link rel="stylesheet" type="text/css" href="css/reset.css" />
<link rel="stylesheet" type="text/css" href="css/index.css" />
<title>Kerst app!</title>
</head>
克斯特应用程序!
我没有注意到我有两次“内容安全策略”元标记我知道,对吧?复制导致iOS只取最新的一个,更严格。删除了复制,第一次工作 最后是corect代码
<head>
<meta charset="utf-8" />
<!--<meta http-equiv="Content-Security-Policy"
content="default-src *; style-src 'self' http://* 'unsafe-inline'; script-src 'self' http://* 'unsafe-inline' 'unsafe-eval'" />-->
<meta http-equiv="Content-Security-Policy" content="
default-src * data: blob: ws: wss: gap://ready file://*;
style-src * 'unsafe-inline';
script-src * 'unsafe-inline' 'unsafe-eval';
connect-src * ws: wss:;">
<meta name="format-detection" content="telephone=no" />
<meta name="msapplication-tap-highlight" content="no" />
<meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width" />
<link rel="stylesheet" type="text/css" href="css/reset.css" />
<link rel="stylesheet" type="text/css" href="css/index.css" />
<title>Kerst app!</title>
</head>
克斯特应用程序!
也有同样的问题,说“拒绝连接到blob:[…],因为它没有出现在内容安全策略的connect src指令中。”
事实证明(与您不同),我没有两个内容安全策略实例,而是两个“connect src”实例,第二个实例缺少“blob:”
非常感谢您将我推向正确的方向!我只添加了第一个“内容安全策略”“而且没有两次添加meta标记,这对我来说很好,解决了摄像头在iOS中无法打开的问题。非常感谢!你和这个家伙:周五下午救了我一天,因为定位服务没有在iOS 12上运行。添加gap://ready 解决了这个问题不是专家,但我相信不是它读的是最新的一行,而是它读的是最严格的一行,碰巧它是最后一行
SecurityError (DOM Exception 18): The operation is insecure.
<head>
<meta charset="utf-8" />
<!--<meta http-equiv="Content-Security-Policy"
content="default-src *; style-src 'self' http://* 'unsafe-inline'; script-src 'self' http://* 'unsafe-inline' 'unsafe-eval'" />-->
<meta http-equiv="Content-Security-Policy" content="
default-src * data: blob: ws: wss: gap://ready file://*;
style-src * 'unsafe-inline';
script-src * 'unsafe-inline' 'unsafe-eval';
connect-src * ws: wss:;">
<meta name="format-detection" content="telephone=no" />
<meta name="msapplication-tap-highlight" content="no" />
<meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width" />
<meta http-equiv="Content-Security-Policy" content="default-src * 'unsafe-inline'; style-src 'self' 'unsafe-inline'; media-src"/>
<link rel="stylesheet" type="text/css" href="css/reset.css" />
<link rel="stylesheet" type="text/css" href="css/index.css" />
<title>Kerst app!</title>
</head>
<head>
<meta charset="utf-8" />
<!--<meta http-equiv="Content-Security-Policy"
content="default-src *; style-src 'self' http://* 'unsafe-inline'; script-src 'self' http://* 'unsafe-inline' 'unsafe-eval'" />-->
<meta http-equiv="Content-Security-Policy" content="
default-src * data: blob: ws: wss: gap://ready file://*;
style-src * 'unsafe-inline';
script-src * 'unsafe-inline' 'unsafe-eval';
connect-src * ws: wss:;">
<meta name="format-detection" content="telephone=no" />
<meta name="msapplication-tap-highlight" content="no" />
<meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width" />
<link rel="stylesheet" type="text/css" href="css/reset.css" />
<link rel="stylesheet" type="text/css" href="css/index.css" />
<title>Kerst app!</title>
</head>