Я создаю мобильное приложение с помощью WKWebView. Я регистрирую пользовательские схемы URL-адресов image: // и thumb: // для передачи ресурсов из собственной части в веб-часть приложения.
webViewConfiguration.setURLSchemeHandler(handler, forURLScheme: "image")
webViewConfiguration.setURLSchemeHandler(handler, forURLScheme: "thumb")
Этот подход хорошо работает, если используются URL-адреса с настраиваемой схемой в HTML. Например, <img src="thumb://watermarkly.com/1.jpg" />
работает правильно - WKWebView вызывает мой обработчик и отображает результат. Однако WKWebView блокирует запросы, если я пытаюсь получить эти URL-адреса с помощью XMLHttpRequest:
[Warning] The page at https://watermarkly.com/app/watermark/ was allowed to display insecure content from thumb://watermarkly.com/1.jpg.
[Warning] [blocked] The page at https://watermarkly.com/app/watermark/ was not allowed to display insecure content from image://watermarkly.com/1.jpg.
[Error] Not allowed to request resource
[Error] XMLHttpRequest cannot load image://watermarkly.com/1.jpg due to access control checks.
Единственное различие заключается в том, что URL-адрес thumb: был назначен тегу img, а URL-адрес image: был получен через XMLHttpRequest. К сожалению, в Safari Developer Tools нет другой информации.
Проблема возникает только на реальных устройствах - все работает правильно в iOS Simulator.
Есть ли что-то, что мне нужно настроить, чтобы сделать он работает и для XMLHttpRequests?
Обновление
Мы перешли с HTTPS на HTTP, чтобы XHR решил проблему.
К сожалению, пользовательские схемы URL-адресов, похоже, не работают. некоторые айфоны. У нас 5 клиентов с iPhone, которые не переключаются на HTTP и не отправляют справку заголовка Access-Control-Allow-Origin. Нам не удалось определить, какой параметр вызывает проблему - проблема не может быть воспроизведена ни на одном из имеющихся у нас устройств. У обозревателя Apple тоже не было претензий. Ни XHR, ни получение изображений по URL-адресам не работают на этих телефонах. У одного из клиентов два телефона. Пользовательские схемы URL работают с одним из них, а со вторым - совсем не работают. Он говорит, что они идентичны и не установлены расширения Safari. К сожалению, нам не удалось определить причину проблемы. Помните, что настраиваемые схемы URL-адресов могут не работать на некоторых телефонах.