HTTP-Header in der WebSocket-Client-API
Es ist allgemein bekannt, dass die Anpassung von HTTP-Headern mit HTTP-Header-Clients erreicht werden kann, die diese Funktion unterstützen. Aber wie erreicht man das konkret mit der WebSocket-API in der Webplattform?
Ist das möglich?
Kurz gesagt lautet die Antwort Nein. Es können nur der Pfad und das Protokollfeld angegeben werden.
Längere Erklärung
In der JavaScript-WebSocket-API gibt es keine integrierte Methode zum Festlegen zusätzlicher Header. Sie können jedoch den HTTP-Pfad („GET /xyz“) und den Protokollheader („Sec-WebSocket-Protocol“) während der Initialisierung des WebSocket-Konstruktors angeben.
Der Sec-WebSocket-Protocol-Header, der sein kann wird für die Websocket-spezifische Authentifizierung verwendet und wird vom optionalen zweiten Argument des Konstruktors abgeleitet:
var ws = new WebSocket("ws://example.com/path", "protocol"); var ws = new WebSocket("ws://example.com/path", ["protocol1", "protocol2"]);
Möglich Lösung
Ein gängiger Ansatz zur Handhabung der WebSocket-Authentifizierung/Autorisierung ist ein Ticketsystem. Dabei fordert die Seite, die den WebSocket-Client hostet, ein Ticket vom Server an und bindet es in den Verbindungsaufbau ein (z. B. in der URL/Abfragezeichenfolge, im Protokollfeld oder als erste Nachricht nach dem Verbindungsaufbau). Der Server überprüft dann die Gültigkeit des Tickets und autorisiert die Verbindung, wenn sie erfolgreich ist.
Das obige ist der detaillierte Inhalt vonKann ich HTTP-Header in der WebSocket-API anpassen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!