Fragensteller
HTTP/2 Server push mit PHP auf dem IIS unter Windows 10

Frage
-
Hallo Zusammen,
ich möchte einen Server-Push über PHP testen. Ich habe die folgende Konfiguration:
- PHP 7.4
- IIS 10
- Opera Browser 65
- Windows 10
Es ist eine sehr kleine Datei, die nur als Beispiel dient.
<html> <head> <title>Test Server Push</title> <link href="/test.css" rel="stylesheet"> </head> <body> <h1>Test Server Push</h1> <p>Hello Push!</p> </body> </html>
Dieser Datei wird noch die folgende Zeile mit PHP mitgegeben:
<?php header("Link: </test.css>; rel=preload; as=style"); ?>
Die Entwicklerwerkzeuge von Opera zeigen mich als Protokoll h2 (für http/2). Der Initiator sagt in der Datei test.css "other". Beim Waterfall sagt text.css "Warten (TTFB)". Das müsste ja wegfallen.
Ich verwende https und ein gültiges Zertifikat wird angezeigt (grünes Schloss). Ich denke, alle Anforderungen für den Server-Push mit HTTP/2 sind damit erfüllt. Die Entwicklertools in Google Chrome zeigten mir das gleiche Ergebnis an.
Was könnte hier der Fehler sein? Oder muss ein Server-Push irgendwo unter IIS aktiviert werden? Dies ist normalerweise in HTTP/2 standardmäßig aktiviert, oder?
Screenshots kann ich noch nicht angeben, das Konto muss zuvor geprüft werden.
Der Response-Header der index.php ist wie folgt:
content-length: 242
content-type: text/html; charset=UTF-8
date: Fri, 29 Nov 2019 11:51:19 GMT
link: </test.css>; rel=preload; as=style
server: Microsoft-IIS/10.0
status: 200
strict-transport-security: max-age=0
x-powered-by: PHP/7.4.0Der Header wird also übernommen. Kann IIS 10 in Verbindung mit PHP bzw. der Header-Funktion keinen Push? Die Entwicklertools von Opera zeigen diese (soweit ich weiß) eigentlich korrekt an.
Danke für eure Hilfe oder Hinweise.
- Bearbeitet PascalAv Freitag, 29. November 2019 11:57
Alle Antworten
-
Prüfe mal an Hand dieser Erklärungen:
https://www.cyon.ch/blog/HTTP2-Server-Pushund hier:
https://docs.microsoft.com/en-us/iis/get-started/whats-new-in-iis-10/http2-on-iis- Bearbeitet Der Suchende Freitag, 29. November 2019 12:20
-
Was den ersten Link angeht, dem folge ich. Meine Definition in PHP sieht genauso aus.
Was den zweiten Link angeht, hier wird von HTTP/2 gesprochen und dies wird hier auch korrekt genutzt.
Ansonsten gibt es keinen Verweis auf PHP. Man könnte den Abschnitt "What about push" aber so verstehen, dass es nur mit dem ASP.NET funktioniert.Na gut, dann klappt es im Zusammenspiel mit PHP über die Header-Funktion wohl nicht auf dem IIS.
Danke schon einmal für die Links.
-
Auf PHP gibt es keinen Verweis aber es gibt einen Fallback auf 1.1 für:
- Windowsauthentication
- Cleartext (only TLS)
- BandwithVersuche also erst mal anonyme Anmeldung und wenn das dann klappt, kannst du immer noch eine Formularautentifizierung programmieren.
-
Müssten die Entwicklertools dann nicht auch HTTP/1.1 anzeigen, anstelle von h2?
Edge zeigt in den Entwicklertools ebenfalls HTTP/2 an.In den Einstellungen vom IIS ist unter Authentifizierung "Anonyme Authentifizierung aktiviert", falls du das meintest.
Die Bandbreite ist unter Limits auch limitiert.
Unter Bindings ist die HTTPS-Bindung vorhanden (dort kann man HTTP/2 deaktivieren) und das Zertifikat wird auch als gültig und mit grünem Schloss angezeigt.
Die Entwicklertools geben unter Sicherheit folgendes aus:
The connection to this site is encrypted and authenticated using TLS 1.2, ECDHE_RSA with P-384, and AES_256_GCM
So wird mir also überall angezeigt, dass HTTP/2 verwendet wird.
Im Grunde kann ich natürlich z. B. auch einen NGINX Webserver einrichten, aber da Windows 10 ja einen Webserver für die Entwicklung an Bord hat...
- Bearbeitet PascalAv Freitag, 29. November 2019 14:38