Abrufen und Bereitstellen von SXG-Dateien und die Herausforderungen des Prefetch für sekundäre Ressourcen.
Als ein Signierte HTTP-Börsen (SXG) distribuidor, puede entregar archivos SXG en nombre de los creadores de Inhalt original. Los Browser Netz que admiten SXG mostrarán dichos archivos SXG como si fueran entregados por los creadores de contenido original. Esto le permite implementar la precarga entre sitios sin violar la privacidad. Esta guía le muestra cómo distribuir SXG correctamente.
Kompatibilität mit verschiedenen Browsern
Actualmente, Chrome es el único Browser que admite SXG. Consulte la sección Consenso y estandarización de Vom Ursprung signierter HTTP-Austausch für die aktuellsten Informationen.
Holen Sie sich SXG-Dateien
Geben Sie in Ihrem Akzeptieren
encabezado de solicitud que desea que el Server devuelva un archivo SXG junto con la solicitud:
Accept: application/signed-exchange;v=b3,*/*;q=0.8
In diesem Handbuch wird davon ausgegangen, dass Sie Ihre SXG-Dateien in ablegen / var / www / sxg
.
Dient einer einfachen SXG-Datei
Adjunte los siguientes Überschriften para distribuir un solo archivo SXG:
Content-Type: application/signed-exchange;v=v3
X-Content-Type-Options: nosniff
Einrichten Nginx
:
http {
...
Typen {
application/signed-exchange;v=b3 sxg;
}
add_header X.-Inhalt-Type-Options nosniff;location / {
more_set_headers "Content-Type: application/signed-exchange;v=b3";
alias /var/www/sxg/;
try_files $uri.sxg $uri =404;
autoindex aus;
}
...
Laden Sie die neue Konfiguration auf hoch Nginx
:
sudo systemctl restart nginx.service
Nginx
Es werden SXG-Dateien bereitgestellt. Wenn Chrome auf Ihren Server zugreift, wird die Adresse des ursprünglichen Inhaltsherstellers in der Leiste angezeigt.
Vorheriger Erwerb von Sekundärressourcen
La mayoría de las páginas web constan de múltiples subrecursos, como CSS, JavaScript, fuentes e imágenes. El contenido de SXG no se puede cambiar sin la clave privada del creador del contenido. Esto causa problemas cuando el navegador intenta resolver subrecursos.
Nehmen wir zum Beispiel an Index.html.sxg
von https://website.test/index.html
haben eine Verknüpfung zu https://website.test/app.js
. Cuando el navegador de un Nutzername recibe el archivo SXG de https://distributor.test/example.com/index.html.sxg
finden Sie den Link zu https://website.test/app.js
. Der Browser kann abrufen https://website.test/app.js
direkt im eigentlichen Zugriff, sollte jedoch nicht in der Vorladephase erfolgen, um die Privatsphäre zu schützen. Wenn die Ressource während der Vorladephase abgerufen wurde, ist dies für den Inhaltsersteller möglich (website.test
) um erkennen zu können, welcher Inhaltsverteiler (Distributor.test
) fordert die Ressource an.
Wenn der Händler dienen möchte App.js.sxg
von Ihrem eigenen Dienst und versuchen, zu ändern https://website.test/app.js
die Distributor-Version dieser Subressource zu sein (wie https://distributor.test/website.test/app.js.sxg
), provocará una discrepancia de firma y hará que el SXG no Sein válido.
Um dieses Problem zu lösen, gibt es jetzt in Chrome eine experimentelle Funktion zur Vorwiederherstellung untergeordneter SXG-Ressourcen. Sie können es aktivieren in: chrome://flags/#enable-sxg-subresource-prefetching
. Um den Prefetch für sekundäre Ressourcen verwenden zu können, müssen die folgenden Bedingungen erfüllt sein:
- Der Editor sollte einen Antwortheadereintrag in SXG einbetten, wie:
Verknüpfung: ; rel = "Preload"; as = "script", ; rel = "erlaubt-alt-sxg"; Header-Integrität = "sha256-h6GuCtTXe2nITIHHpJM + xCxcKrYDpOFcIXjihE4asxk ="
. Dies gibt die Unterressource an, die den SXG-spezifischen Integritäts-Hash ersetzen kann. - Der Verteiler muss bei der Wartung des SXG einen Antwortheader anhängen, z.
Verknüpfung: ; rel = "alternativ"; type = "Anwendung / signierter Austausch; v = b3"; anchor = "https: //website.test/app.js"
. Dies gibt den Pfad von anapp.js.
y entspricht der Unterressource.
Der erste ist da relativ einfach nginx-sxg-Modul
Sie können Integritäts-Hashes berechnen und in Uplink-Antwortlink-Header einbetten. Die zweite ist jedoch schwieriger, da der Inhaltsverteiler die in der SXG angegebenen Unterressourcen kennen muss.
Wenn es keine anderen zusätzlichen Ressourcen als gibt https://website.test/app.js
Dann müssen Sie in Ihrer Nginx-Konfiguration nur noch Folgendes hinzufügen:
add_header Verknüpfung <https://distributor.test/Webseite.test/App.js.sxg>;rel="alter...
Diese Fälle sind jedoch selten, da typische Websites aus einer großen Anzahl sekundärer Ressourcen bestehen. Darüber hinaus muss der Reseller bei der Übermittlung einer SXG-Datei den entsprechenden Ankerlink-Header anhängen. Derzeit gibt es keine einfache Möglichkeit, dieses Problem zu lösen. Halten Sie sich also auf dem Laufenden, um Updates zu erhalten!
Kommentar schreiben
Chromium-Ingenieure sind gespannt auf Ihre Kommentare zur SXG-Distribution unter [email protected]. Sie können auch beitreten die Spezifikationsdiskussionoder Melde einen technischen Fehler an das Team. Ihr Feedback ist eine große Hilfe im Standardisierungsprozess und hilft auch bei der Lösung von Implementierungsproblemen. Vielen Dank!