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 ответов


кажется, что решение найдено. После нескольких дней расследования отключение динамическое сжатие содержимого помогло.

enter image description here


ответ уже правильно приведенными выше по Владо 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 не поддерживают его, поэтому он работает.

https://github.com/saucecontrol/Brotli-IIS