HTTP-Header in der Websocket-Client-API
Die WebSocket-API bietet eine einfache Möglichkeit, benutzerdefinierte HTTP-Header zu Ihrem Client hinzuzufügen. Es ist jedoch zu beachten, dass nur bestimmte Header angegeben werden können.
Einschränkungen bei der Anpassung
Entgegen der landläufigen Meinung erlaubt Ihnen die JavaScript WebSockets API nicht, beliebige HTTP-Header anzugeben . Es können nur die Felder Pfad und Protokoll festgelegt werden. Der Pfad wird im ersten Argument des WebSocket-Konstruktors angegeben, während der Protokoll-Header im optionalen zweiten Argument angegeben wird.
Protokoll-Header angeben
var ws = new WebSocket("ws://example.com/path", "protocol");
Der obige Code generiert den folgenden Header:
Sec-WebSocket-Protocol: protocol
Sie können auch mehrere angeben Protokolle:
var ws = new WebSocket("ws://example.com/path", ["protocol1", "protocol2"]);
Ergebnis des folgenden Headers:
Sec-WebSocket-Protocol: protocol1, protocol2
Authentifizierung/Autorisierung
Ein gängiger Ansatz für die Authentifizierung über WebSockets ist Verwenden Sie ein Ticketsystem. Der Server generiert ein Ticket, das der Client in die URL, das Protokollfeld oder die erste Nachricht nach der Verbindung einfügt. Der Server validiert dann das Ticket und fährt mit der Verbindung fort oder lehnt sie entsprechend ab.
Basisauthentifizierung (veraltet)
Die Basisauthentifizierung wurde zuvor akzeptiert, wurde jedoch veraltet und ist nicht mehr verfügbar Wird von modernen Browsern nicht mehr unterstützt.
Zusätzlich Hinweise
Es ist erwähnenswert, dass der Authorization-Header aus dem Benutzernamen und dem Passwort im WebSocket-URI generiert werden könnte (obwohl diese Methode ebenfalls veraltet ist).
Um mehr über die WebSocket-Sicherheit zu erfahren , siehe diesen Artikel: https://devcenter.heroku.com/articles/websocket-security
Das obige ist der detaillierte Inhalt vonWie kann ich in JavaScript benutzerdefinierte HTTP-Header zu meinem WebSocket-Client hinzufügen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!