Socket.io-client: Wie setze ich Anforderungsheader, wenn eine Verbindung zum Server hergestellt wird?

Erstellt am 9. Juli 2014  ·  13Kommentare  ·  Quelle: socketio/socket.io-client

So legen Sie benutzerdefinierte Anforderungsheader fest, wenn Sie socket.io mit dem js-Client verbinden

Feature request

Hilfreichster Kommentar

@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'
      }
    }
  }
});

Alle 13 Kommentare

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?

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen