[JAVA] So ermitteln Sie die Prefetch-Anforderung (Prefetch) im Browser

TL;DR Es gibt Fälle, in denen Vorausleseanforderungen (Prefetch, Prefetch) nicht nur an CSS, sondern auch an andere URLs gesendet werden. Für einen bestimmten Endpunkt

Wenn Sie die oben genannten Anforderungen haben, sollten Sie Prefetch-Maßnahmen ergreifen.

Hintergrund

Bei der Entwicklung eines Websystems habe ich über die Ursache nachgedacht, da eine unbeabsichtigte GET-Anforderung in das Protokoll für den Testserver eingegangen ist. Nach der Untersuchung scheint es, dass der Browser die GET-Anforderung als Vorausschauprozess (Prefetch) überspringt, wenn er etwas in die Browserleiste eingibt. Da im Header für diese Anforderung ein eindeutiger Wert festgelegt ist, wird jeder Browser Der Erkennungsprozess wurde implementiert, um die Spezifikationen von zu unterstützen.

Header mit Prefetch für jeden Browser

Chrome(Chromium) Purpose: prefetch https://www.chromestatus.com/feature/6247959677108224 https://bugs.chromium.org/p/chromium/issues/detail?id=86175#c65

Firefox X-Moz: Prefetch https://developer.mozilla.org/ja/docs/Web/HTTP/Link_prefetching_FAQ

Safari X-Purpose: preview

Implementierungsbeispiel

import org.apache.commons.lang3.StringUtils;
import javax.servlet.http.HttpServletRequest;

public static boolean isPrefetchRequest(HttpServletRequest request) {
    return StringUtils.equalsAny(request.getHeader("purpose"), "Prefetch", "prefetch") ||
            StringUtils.equalsAny(request.getHeader("X-moz"), "Prefetch", "prefetch") ||
            StringUtils.equalsAny(request.getHeader("X-Purpose"), "Preview", "preview");
}

Ergänzung

――Da die Spezifikationen nicht durch eine leichte Prüfung festgelegt werden, erfolgt die Nachverfolgung unter der Annahme, dass Änderungen vorgenommen werden. --Die bereitgestellten Informationen gelten zum Zeitpunkt des Schreibens.

Recommended Posts

So ermitteln Sie die Prefetch-Anforderung (Prefetch) im Browser
So bestimmen Sie die Anzahl der Parallelen
[Java] So extrahieren Sie den Dateinamen aus dem Pfad
Verstehen Sie den groben Fluss von der Anforderung zur Antwort in SpringWebMVC
So erstellen Sie ein Formular zur Auswahl eines Datums aus dem Kalender
So erhalten Sie die längsten Informationen von Twitter ab dem 12.12.2016
So deaktivieren Sie Set-Cookie über die API auf der Vorderseite
[Docker] Zugriff auf den Host aus dem Container heraus. http: //host.docker.internal:
So wenden Sie das C-Code-Format über die Befehlszeile an
Verwendung der link_to-Methode
Verwendung der include? -Methode
Verwendung der Methode form_with
So finden Sie den durchschnittlichen Winkel
Verwendung der Wrapper-Klasse
[Schienen] So ändern Sie den Seitentitel des Browsers für jede Seite
So führen Sie das Kotlin Coroutine-Beispiel über die Befehlszeile aus
So fügen Sie die Löschfunktion hinzu
Der Weg von JavaScript nach Java
[Java] So konvertieren Sie vom Typ String in den Pfadtyp und erhalten den Pfad
So wechseln Sie von HTML zu Haml
So wenden Sie Thymeleaf-Änderungen sofort mit #Spring Boot + maven auf den Browser an
Zurückgeben eines Werts vom Modell an den Controller mithilfe des [Swift5] -Protokolls
[Spring Boot] Ich habe untersucht, wie die Nachbearbeitung der empfangenen Anforderung implementiert werden kann.
So führen Sie eine GIF-Datei über die Linux-Befehlszeile aus (Ubuntu)
Bestätigung und Umgestaltung des Flusses von der Anfrage zum Controller in [httpclient]
Wie man nur die Zeit mit Rails vergleicht (von welcher Zeit bis zu welcher Zeit, so etwas wie)
So erhalten Sie den Einstellungswert (Eigenschaftswert) aus der Datenbank in Spring Framework
[Java] Verwendung der File-Klasse
Untersuchen Sie den Ersatz von Docker zu Podman.
So löschen Sie die Fehlerbündelung
[Ruby] Von den Grundlagen bis zur Injektionsmethode
[Schienen] Verwendung der Kartenmethode
Studieren der Verwendung des Konstruktors (Java)
So rufen Sie Swift 5.3-Code von Objective-C auf
[Verarbeitung × Java] Verwendung der Schleife
[Java] So stellen Sie die Datums- und Uhrzeit auf 00:00:00 ein
[Java] So erhalten Sie das aktuelle Verzeichnis
[Flattern] Wie verwende ich C / C ++ von Dart?
[Verarbeitung × Java] Verwendung der Klasse
Java: So senden Sie Werte von Servlet zu Servlet
So sortieren Sie eine Liste von SelectItems
Wie man die Zehner und Einsen findet
So übergeben Sie den Wert an einen anderen Bildschirm
So erhalten Sie das Datum mit Java
[Verarbeitung × Java] Verwendung der Funktion
[Java] Verwendung der Calendar-Klasse