Obtention et livraison de fichiers SXG et défis de la prélecture des ressources secondaires.
Comme un Échanges HTTP signés (SXG) distribuidor, puede entregar archivos SXG en nombre de los creadores de Contenu original. Los navigateurs la toile 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.
Compatibilité avec différents navigateurs
Actualmente, Chrome es el único le navigateur que admite SXG. Consulte la sección Consenso y estandarización de Echanges HTTP signés par origine pour les informations les plus récentes.
Obtenir les fichiers SXG
Précisez dans votre J'accepte
encabezado de solicitud que desea que el serveur devuelva un archivo SXG junto con la solicitud:
Accept: application/signed-exchange;v=b3,*/*;q=0.8
Ce guide suppose que vous placez vos fichiers SXG dans / var / www / sxg
.
Sert un simple fichier SXG
Adjunte los siguientes en-têtes para distribuir un solo archivo SXG:
Content-Type: application/signed-exchange;v=v3
X-Content-Type-Options: nosniff
Mettre en place nginx
:
http {
...
les types {
application/signed-exchange;v=b3 sxg;
}
add_header X-Contenu-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 off;
}
...
Téléchargez la nouvelle configuration sur nginx
:
sudo systemctl restart nginx.service
nginx
il commencera à servir les fichiers SXG. Lorsque Chrome accède à votre serveur, l'adresse de l'éditeur de contenu d'origine apparaît dans la barre.
Acquisition préalable de ressources secondaires
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.
Par exemple, supposons indice.html.sxg
de https://website.test/index.html
il a un relier à https://website.test/app.js
. Cuando el navegador de un Nom d'utilisateur recibe el archivo SXG de https://distributor.test/example.com/index.html.sxg
, vous trouverez le lien vers https://website.test/app.js
. Le navigateur peut récupérer https://website.test/app.js
directement dans l'accès réel, mais ne doit pas être fait dans la phase de préchargement pour préserver la confidentialité. Si la ressource a été obtenue lors de la phase de préchargement, il serait possible pour le créateur de contenu (website.test
) pour pouvoir détecter quel distributeur de contenu (distributeur.test
) demande la ressource.
Si le concessionnaire veut servir appli.js.sxg
de votre propre service et essayez de modifier https://website.test/app.js
être la version distributeur de cette sous-ressource (comme https://distributor.test/website.test/app.js.sxg
), provocará una discrepancia de firma y hará que el SXG no être válido.
Pour résoudre ce problème, il existe désormais une fonctionnalité expérimentale de pré-récupération des ressources enfants SXG dans Chrome. Vous pouvez l'activer dans: chrome://flags/#enable-sxg-subresource-prefetching
. Pour utiliser la prélecture de ressource secondaire, les conditions suivantes doivent être remplies:
- L'éditeur doit intégrer une entrée d'en-tête de réponse dans SXG, comme:
relier: ; rel = "preload"; as = "script", ; rel = "allowed-alt-sxg"; header-integrity = "sha256-h6GuCtTXe2nITIHHpJM + xCxcKrYDpOFcIXjihE4asxk ="
. Cela spécifie la sous-ressource qui peut être remplacée par le hachage d'intégrité spécifique à SXG. - Le distributeur doit attacher un en-tête de réponse lors de l'entretien du SXG, tel que:
relier: ; rel = "alternative"; type = "application / échange-signé; v = b3"; anchor = "https: //website.test/app.js"
. Ceci spécifie le chemin deapp.js
y correspond à la sous-ressource.
Le premier est relativement simple car module nginx-sxg
vous pouvez calculer les hachages d'intégrité et les incorporer dans les en-têtes de lien de réponse de liaison montante. Mais le second est plus difficile car le distributeur de contenu doit connaître les sous-ressources spécifiées dans le SXG.
S'il n'y a pas d'autres ressources supplémentaires que https://website.test/app.js
, alors tout ce que vous devez ajouter dans votre configuration nginx est:
add_header relier <https://distributor.test/site Internet.test/appli.js.sxg>;rel="alter...
Mais ces cas sont rares car les sites Web typiques sont constitués d'un grand nombre de ressources secondaires. En outre, le revendeur doit joindre l'en-tête du lien d'ancrage approprié lors de la livraison d'un fichier SXG. Actuellement, il n'y a pas de moyen facile de résoudre ce problème, alors restez à l'écoute pour les mises à jour!
Poster des commentaires
Les ingénieurs de Chromium sont impatients d'entendre vos commentaires sur la distribution SXG à [email protected]. Vous pouvez également rejoindre la discussion sur les spécificationsou Signaler un bug à l'équipe. Vos commentaires seront d'une grande aide dans le processus de normalisation et aideront également à résoudre les problèmes de mise en œuvre. Merci!