So legen Sie benutzerdefinierte Anforderungsheader fest, wenn Sie socket.io mit dem js-Client verbinden
Das brauche ich auch... Hast du eine Lösung gefunden?
das interessiert mich auch.
Ich habe gesehen, wie es auf dem Java-Socket.io-Client gemacht wird, aber nicht auf dem JS-Client
Funktioniert nicht mit allen Transportmethoden.
Wenn Sie XHR/Ajax Polling verwenden, ist dies möglich, jedoch nicht für WebSockets
in HTML5.
http://stackoverflow.com/questions/4361173/http-headers-in-websockets-client-apic
Ich suche nach einer Lösung dafür.
Was versuchst du zu erreichen? Können Sie keine URL-Parameter verwenden?
Ich versuche, einen Test zu schreiben, um zu überprüfen, ob Websockets vor und nach der Authentifizierungs-Middleware belauscht werden können.
Um mich jedoch erfolgreich zu authentifizieren, muss ich zusammen mit der anfänglichen HTTP-Upgrade-Anfrage eine Cookie-Sitzung senden. Es funktioniert im Browser, ich möchte nur, dass es auch in meinen Knotentests funktioniert.
Gibt es diesbezüglich Fortschritte? Oder irgendeinen Hinweis, wie man die Cookie-Session / sessionId in socket.io erhält/festlegt?
Ich habe es tatsächlich zum Laufen gebracht. Die Details des anfänglichen HTTP-Handshakes sind unter socket.request
verfügbar. Dort finden Sie die Sitzung. Verwenden Sie beispielsweise die Socket.io-Middleware:
io.use(function(socket, next){
if (!socket.request.session){
console.log('no session in socket')
socket.disconnect();
}
next();
});
Seit Version 2.0.0
können Sie jetzt Anforderungsheader mit der Option extraHeaders
festlegen:
const socket = io({
transportOptions: {
polling: {
extraHeaders: {
'x-clientid': 'abc'
}
}
}
});
Wie kann ich diesem Beispiel eine URL hinzufügen?
const-Socket = io({
Transportoptionen: {
Umfrage: {
extraHeader: {
'x-clientid': 'abc'
}
}
}
});
@muhammadnasr Übergeben Sie die Optionen im zweiten Argument, wobei das erste die URL ist:
const socket = io("/your-url-here", {
transportOptions: {
polling: {
extraHeaders: {
'x-clientid': 'abc'
}
}
}
});
Das ist großartig.
Haben Sie Beispielcode zum Festlegen von Headern für das iOS- und Android-SDK?
Vielen Dank.
Können die Header dynamisch gesetzt werden?
Hilfreichster Kommentar
@muhammadnasr Übergeben Sie die Optionen im zweiten Argument, wobei das erste die URL ist: