Safari не будет загружать некоторые ресурсы через http / 2
Http / 2 включен на сервере, и вчера я заметил, что на Iphone (IOS 10.2) не загружает некоторые ресурсы с ошибкой:failed to load resource:connecting to server is not possible
. Когда я подключаю Iphone к Mac, в консоли нет ошибок, но просто результат некоторых запросов приводит к imidiatelly в этой ошибке. Интересным может быть тот факт, что ресурсы, которые не загружаются, являются поддоменом реального домена( CNAME, чтобы быть правильным). Сайт на HTTPS.
Сервер-это Windows server 2016.
EDIT: Мы решили эту проблема субдомена, но все же есть запросы из того же домена, которые не отвечают никаким ответом.
Я знаю, что IOS > 9.3 поддерживает http / 2, когда ресурсы загружаются через https, но то, что ресурсы, которые не работают, не являются частью этого домена, может помочь решить эту проблему, но я не знаю, как.
Я знаю, что, вероятно, проблема связана с протоколом http/2, потому что моя родная аппликация android также перестала работать с ошибкой : java.io.IOException: stream was reset: PROTOCOL_ERROR
. Я решил, что проблема, заставляя мое приложение использовать http / 1. Теперь работать. Но как решить эту проблему iPhone safari?
Я использую ASP.NET веб-формы в качестве бэкэнда (который поддерживает http2 с ASP.NET 4.6 который я использую).
3 ответов
кажется, что решение найдено. После нескольких дней расследования отключение динамическое сжатие содержимого помогло.
ответ уже правильно приведенными выше по Владо Pandžić. Я не могу комментировать, поскольку я новичок на этом сайте, но я хотел добавить что-то, что я нашел.
IOS меньше, чем версия 11 поддерживает HTTP / 2. Но! Он застрянет, если страница слишком большая и сжатая. Я не уверен, что такое отключение, но если вы откроете небольшую страницу с динамическим сжатием (Gzip или что-то еще), она будет работать нормально. ASP или PHP и т. д., не имеет значения. Как только страница достигает сжатого размер данных, который требует нескольких поездок туда и обратно, чтобы вытащить данные, а затем Safari получает его трусики в твист.
он буквально перейдет в бесконечный цикл, забивая ваш сервер запросами. Я видел тысячи просмотров страниц, в то время как Safari просто застрял на пустом белом экране.
проблема для меня в том, что отключение динамического сжатия на всем вашем сайте приведет к штрафам от Google за мобильность. Google хочет, чтобы у вас было сжатие, но вы должны отключить его для Safari, что отстой.
моим решением для этого было включить динамическое сжатие на всем веб-сайте, но я использовал web.конфигурационный файл, чтобы отключить его для конкретных страниц, которые я знаю, могут быть довольно большими по размеру.
<location path="large-page.aspx">
<system.webServer>
<urlCompression doDynamicCompression="false" />
</system.webServer>
</location>
удачи!
матовая
вы также можете отключить gZip и использовать brotli вместо сжатия, более старые версии Safari не поддерживают его, поэтому он работает.