iOS Отказано в подключении, поскольку оно не указано ни в директиве connect-src, ни в директиве default-src политики безопасности контента

Поэтому я сделал приложение phonegap, которое использует socket.io для работы.
У меня есть следующая Content-Security-Policy (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.
Я думаю, что это имеет какое-то отношение к:
усовершенствованная политика безопасности контента (WebKit)

Ресурсы, которые, кажется, приходят много:

  • Lounge не работает над https из-за соблюдения правил безопасности контента в Safari v10
  • запрос не отправляется на iOS 10.0

Почему он говорит «Отказ от подключения к» URL-адресу, начинающему с ws: », потому что он не указан ни в директиве connect-src, ни в директиве по умолчанию-src политики Content-Security-политики, даже если она упоминается в обоих?

Хорошо, Safari / iOS является более строгим, чем хром / Android, когда дело доходит до этого, все в порядке, но мне все же нужно разрешить мне разрешить соединение. Это действительно расстраивает разработчика приложений! Решения?

EDIT: сделал отчет об ошибке на bugs.webkit.org: https://bugs.webkit.org/show_bug.cgi?id=165754

Хорошо, так что это немного глупо, но хорошо, я буду держать этот ответ так, чтобы будущие люди могли его увидеть и не должны иметь дело с этой проблемой

То, что я сделал неправильно, было:
У меня был следующий руководитель:

 <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> 

И я не заметил, что у меня был метатег «Content-Security-Policy» дважды
Я точно знаю? Дубликат заставил iOS просто взять последнюю версию, которая была более строгой. Удалил дубликат, работал в первый раз.

  • Нажатие WKWebView на UINavigationController вызывает ui отставание
  • -webkit-overflow-scrolling: touch не распознается в хроме и на ios
  • -webkit-transform Запрещает страницу с загрузки
  • WKWebView падает в ускоренном режимеAnimationDidStart
  • Почему Apple относится к этим приложениям специально?
  • WKWebKit: нет параметров dataDetectorTypes
  • Получение всех файлов cookie из WKWebView
  • Как очистить историю в WKWebView?
  • HTML-разбивка на страницы
  • событие touchMove на мобильном сафари - приводит к перетаскиванию всей страницы
  • Safari: неправильный расчет видового экрана для размеров шрифта
  • Давайте будем гением компьютера.