Sec-Speculation-Tags
Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.
Der HTTP Sec-Speculation-Tags
Request-Header enthält einen oder mehrere tag
Werte aus den Spekulationsregeln, die zur Spekulation geführt haben. Dies ermöglicht es einem Server, zu identifizieren, welche Regel(n) eine Spekulation verursacht haben und diese gegebenenfalls zu blockieren.
Ein CDN könnte beispielsweise Spekulationsregeln automatisch einfügen, aber Spekulationen für nicht im CDN zwischengespeicherte Ressourcen blockieren, um unbeabsichtigte Konsequenzen zu vermeiden. Der Sec-Speculation-Tags
Header ermöglicht es dem CDN, zwischen den von ihm eingefügten Regeln (die in diesem Fall blockiert werden sollten) und den vom Website-Besitzer hinzugefügten Spekulationsregeln (die nicht blockiert werden sollten) zu unterscheiden.
Header-Typ | Request-Header |
---|---|
Verbotener Request-Header | Ja (Sec- Präfix) |
Syntax
Sec-Speculation-Tags: <tag-list>
Direktiven
<tag-list>
-
Eine durch Kommas getrennte Liste von Tags, die auf Speculation Rules API Regeln hinweisen, die diese Anfrage möglicherweise initiiert haben. Siehe JSON-Darstellung von Spekulationsregeln für die Syntaxreferenz.
Beispiele
Spekulation aus einer Regel ohne explizites Tag
<script type="speculationrules">
{
"prefetch": [
{
"urls": ["next.html", "next2.html"]
}
]
}
</script>
Wenn eine Spekulation aufgrund einer Spekulationsregel ohne Tag auftritt, wird null
im Sec-Speculation-Tags
Header gesendet.
Sec-Speculation-Tags: null
Spekulation aus einer Regel mit einem Tag
<script type="speculationrules">
{
"prefetch": [
{
"tag": "my-rule",
"urls": ["next.html", "next2.html"]
}
]
}
</script>
Wenn eine Spekulation aufgrund einer Spekulationsregel mit einem Tag auftritt, wird der Tag-Name im Sec-Speculation-Tags
Header gesendet.
Sec-Speculation-Tags: "my-rule"
Spekulation aus einer Regel mit mehreren Tags
Der tag
kann auf mehreren Ebenen festgelegt werden:
<script type="speculationrules">
{
"tag": "my-ruleset",
"prefetch": [
{
"tag": "my-rule",
"urls": ["next.html", "next2.html"]
}
]
}
</script>
Alle übereinstimmenden Tags werden im Sec-Speculation-Tags
Header gesendet, so dass in diesem Fall sowohl "my-ruleset"
als auch "my-rule"
gesendet würden:
Sec-Speculation-Tags: "my-ruleset", "my-rule"
Spekulation aus mehreren Regeln
<script type="speculationrules">
{
"prefetch": [
{
"tag": "my-rule",
"urls": ["next.html", "next2.html"],
"eagerness": "moderate"
}
]
}
</script>
<script type="speculationrules">
{
"prefetch": [
{
"tag": "cdn-rule",
"urls": ["next.html", "next.html"],
"eagerness": "conservative"
}
]
}
</script>
In diesem Beispiel, wenn die Spekulation durch das Überfahren des Links für 200 Millisekunden ("eagerness": "moderate"
) initiiert wird, wird nur der my-rule
Tag im Header gesendet:
Sec-Speculation-Tags: "my-rule"
Wenn jedoch der Link sofort angeklickt wird, ohne auf den 200 Millisekunden Hover zu warten, hätten beide Regeln eine Spekulation ausgelöst, daher würden beide Tags im Header enthalten sein:
Sec-Speculation-Tags: "my-rule", "cdn-rule"
Spekulation aus mehreren Regeln mit und ohne Tags
<script type="speculationrules">
{
"prefetch": [
{
"urls": ["next.html", "next2.html"],
"eagerness": "moderate"
}
]
}
</script>
<script type="speculationrules">
{
"prefetch": [
{
"tag": "cdn-rule",
"urls": ["next.html", "next.html"],
"eagerness": "conservative"
}
]
}
</script>
Ähnlich wie im vorherigen Beispiel, wenn der Link sofort geklickt wird, ohne auf den 200 Millisekunden Hover zu warten, hätten beide Regeln eine Spekulation ausgelöst, daher würden beide Tags im Header enthalten sein. Da jedoch die erste Regel kein tag
Feld enthält, wird sie im Header mit einem null
Wert dargestellt:
Sec-Speculation-Tags: null, "cdn-rule"
Spezifikationen
Specification |
---|
Prefetch # sec-speculation-tags-header |