2017-04-06 9 views
13

Http/2 ist auf dem Server aktiviert und gestern habe ich festgestellt, dass auf Iphone (IOS 10.2) einige Ressourcen mit Fehler geladen: failed to load resource:connecting to server is not possible. Wenn ich Iphone mit Mac verbinde, gibt es keine Fehler in der Konsole, aber das Ergebnis einiger Anfragen führt sofort zu diesem Fehler. Interessante Sache könnte die Tatsache sein, dass Ressourcen, die nicht geladen sind, Subdomäne der realen Domäne sind (CNAME, um richtig zu sein). Die Website befindet sich auf https. Server ist Windows-Server 2016.Safari lädt keine Ressourcen über http/2

EDIT: Wir beschließen, dieses Sub-Domain Problem, aber immer noch gibt es Anfragen von derselben Domain, die nicht mit jeder Antwort reagiert.

Ich weiß, dass IOS> 9.3 http/2 unterstützt, wenn Ressourcen über https geladen werden, aber dass Ressourcen, die nicht funktionieren, nicht Teil dieser Domäne sind, können dieses Problem lösen, aber ich weiß nicht wie.

Ich weiß, dass wahrscheinlich Problem mit http/2-Protokoll verbunden ist, weil meine Android-Appliacation auch nicht mehr funktioniert mit Fehler: java.io.IOException: stream was reset: PROTOCOL_ERROR. Ich habe dieses Problem gelöst, indem ich meine Anwendung gezwungen habe, http/1 zu verwenden. Jetzt funktioniert es. Aber wie löst man dieses iPhone Safari Problem?

Ich benutze ASP.NET Web Forms als Backend (die http2 seit ASP.NET 4.6 unterstützt, die ich verwende).

+0

Interessantes Problem, das Sie dort bekommen haben. PS: Formatieren. – Feathercrown

+0

Wird Ihr SSL-Zertifikat nur für echte Domains ausgestellt oder ist es ein Platzhalterzertifikat für Subdomains? –

+0

Ja, und funktioniert für Subdomains, aber ich habe kürzlich festgestellt, dass einige Seiten in einer echten Domain (keine Subdomains) nicht geladen werden. Wenn ich die Seite öffne, die in Chrome oder Firefox nicht funktioniert, erhalte ich eine Antwort (obwohl http 1.1). Seiten, die auf Mac in Chrome funktionieren, funktionieren ebenfalls und geben die HTTP2-Antwort zurück. Es ist möglich, dass etwas auf meiner Website verhindert, dass http2 Antwort zurückkehrt? Oder gibt es ein Problem mit IIS, das keine Anfragen für dieselben Seiten herunterstufen kann? –

Antwort

1

Es scheint, dass die Lösung gefunden wurde. Nach ein paar Tagen der Untersuchung deaktiviert dynamischen Inhalt Komprimierung geholfen.

enter image description here

0

Die Antwort wurde oben von Vlado Pandžić hier schon richtig zur Verfügung gestellt. Ich kann nicht kommentieren, da ich neu auf dieser Seite bin, aber ich wollte etwas hinzufügen, das ich gefunden habe.

IOS weniger als Version 11 unterstützt HTTP/2. ABER! Es bleibt hängen, wenn die Seite zu groß und komprimiert ist. Ich bin nicht sicher, was der Cut-off ist, aber wenn Sie eine kleine Seite öffnen, die dynamische Komprimierung (Gzip oder was auch immer) hat, wird es gut funktionieren. ASP oder PHP usw. spielt keine Rolle. Sobald die Seite eine komprimierte Datengröße erreicht hat, die mehrere Hin- und Rückfahrten erfordert, um die Daten zu ziehen, bekommt Safari seine Knicker in einer Drehung.

Es wird buchstäblich in eine Endlosschleife gehen und Ihren Server mit Anfragen hämmern. Ich sah Tausende von Seitenaufrufen, während Safari nur auf einem leeren weißen Bildschirm feststeckte.

Das Problem für mich ist, dass die Deaktivierung der dynamischen Komprimierung auf Ihrer gesamten Website Strafen von Google für die mobile Benutzerfreundlichkeit zur Folge hat. Google möchte, dass Sie die Komprimierung aktiviert haben, aber Sie müssen sie für Safari deaktivieren, was zum Meckern führt.

Meine Lösung war die dynamische Komprimierung auf der gesamten Website aktivieren, aber ich habe web.config-Datei verwendet, um es für bestimmte Seiten deaktivieren, die ich weiß, kann ziemlich groß sein.

<location path="large-page.aspx"> 
    <system.webServer> 
     <urlCompression doDynamicCompression="false" /> 
    </system.webServer> 
</location> 

Viel Glück!

Matt