Origin-Agent-Cluster header
Der HTTP Origin-Agent-Cluster Response-Header wird verwendet, um anzufordern, dass das zugehörige Document in einem origin-gebundenen Agenten-Cluster platziert werden soll. Dies bedeutet, dass Betriebssystemressourcen (zum Beispiel der Betriebssystemprozess), die zur Auswertung des Dokuments verwendet werden, nur mit anderen Dokumenten vom gleichen Ursprung geteilt werden sollten.
Der Effekt davon ist, dass ein ressourcenintensives Dokument weniger wahrscheinlich die Leistung von Dokumenten aus anderen Ursprüngen beeinträchtigt.
| Headertyp | Response-Header |
|---|---|
| Verbotener Request-Header | Nein |
Syntax
Origin-Agent-Cluster: <boolean>
Direktiven
Beschreibung
Moderne Webbrowser haben eine Mehrprozessarchitektur, bei der Seiten von verschiedenen Ursprüngen in verschiedenen Betriebssystemprozessen laufen können. Dies ist wichtig für die Leistung, weil es bedeutet, dass eine ressourcenintensive Seite nicht so stark andere Seiten beeinträchtigt, die der Benutzer geöffnet hat.
Browser können jedoch generell nicht selbseite, cross-origin Seiten in verschiedenen Prozessen ausführen, aufgrund bestimmter DOM-APIs, die von selbseite, cross-origin Kommunikation abhängen. Zum Beispiel teilen standardmäßig Seiten der folgenden zwei Ursprünge die gleichen Betriebssystemressourcen:
https://apples.example.org https://oranges.example.org
Durch das Setzen des Origin-Agent-Cluster-Headers kann eine Seite anfordern, dass der Browser diesem Ursprung dedizierte Ressourcen zuweist, die nicht mit anderen Ursprüngen geteilt werden.
Der Browser ist nicht verpflichtet, der Anfrage nachzukommen. Wenn er dies tut, gibt die Window.originAgentCluster Eigenschaft true zurück und das Fenster kann die folgenden Dinge nicht tun, die alle von selbseite, cross-origin Kommunikation abhängen:
- Verwenden Sie
Document.domain. - Senden Sie
WebAssembly.Module-Objekte an andere selbseite cross-origin Seiten mittelspostMessage(). - Senden Sie
SharedArrayBufferoderWebAssembly.Memory-Objekte an andere selbseite cross-origin Seiten.
Origin-gebundene Agenten-Cluster sollten nicht als Sicherheitsfunktion betrachtet werden: Browser können die Anfrage aus verschiedenen Gründen ignorieren oder sie auf eine Weise implementieren, die keinen Speicherschutz bietet (z.B. durch die Verwendung separater Threads anstelle separater Prozesse). Stattdessen ist dieses Feature ein Hinweis darauf, dass die Benutzererfahrung verbessert würde, wenn diesem Ursprung dedizierte Ressourcen zugewiesen werden würden.
Angenommen, Ihre Seite enthält eine Seite von einem Ursprung, die ein selbseite, cross-origin iframe einbettet, das ein ressourcenintensives Spiel ausführt. Durch das Setzen von Origin-Agent-Cluster auf dem Dokument im iframe können Sie verhindern, dass das Spiel die Leistung der Hauptseite beeinträchtigt.
Der Browser stellt sicher, dass alle Seiten von einem bestimmten Ursprung entweder origin-gebunden sind oder nicht. Das bedeutet:
- Wenn die erste Seite von einem Ursprung den Header nicht setzt, dann werden keine anderen Seiten von diesem Ursprung origin-gebunden, auch wenn diese anderen Seiten den Header setzen.
- Wenn die erste Seite von einem Ursprung den Header setzt und origin-gebunden wird, dann werden alle anderen Seiten von diesem Ursprung origin-gebunden, unabhängig davon, ob sie darum bitten oder nicht.
Um dieser Art von unvorhersehbarer Situation vorzubeugen, sollten Sie diesen Header für alle Seiten von einem bestimmten Ursprung setzen, oder für keine.
Beispiele
Origin-Agent-Cluster: ?1
Spezifikationen
| Specification |
|---|
| HTML> # origin-agent-cluster> |
Browser-Kompatibilität
Loading…
Siehe auch
Window.originAgentCluster- Agenten-Cluster und Speicherfreigabe im JavaScript-Ausführungsmodell
- Anfordern von Leistungsisolation mit dem Origin-Agent-Cluster-Header auf web.dev