как установить пользовательские заголовки запросов при подключении socket.io с использованием js-клиента
Мне это тоже нужно... Вы нашли какое-нибудь решение?
я также заинтересован в этом.
Я видел, как это сделать на Java socket.io-client, но не на JS.
Не будет работать со всеми видами транспорта.
Если вы используете опрос XHR/Ajax, это возможно, но не для WebSockets
на HTML5.
http://stackoverflow.com/questions/4361173/http-headers-in-websockets-client-apic
Я ищу решение.
Чего вы пытаетесь достичь? Вы не можете использовать параметры URL?
Я пытаюсь написать тест, чтобы проверить, можно ли перехватывать веб-сокеты до и после промежуточного программного обеспечения аутентификации.
Однако для успешной аутентификации мне нужно отправить сеанс cookie вместе с первоначальным запросом на обновление http. Он работает в браузере, я просто хочу, чтобы он работал и в моих тестах узлов.
Есть ли прогресс в этом? Или какой-нибудь намек, как получить/установить cookie-session/sessionId в socket.io?
У меня действительно получилось. Подробная информация о первоначальном HTTP-рукопожатии доступна по адресу socket.request
. Там вы найдете сессию. Например, используя промежуточное ПО socket.io:
io.use(function(socket, next){
if (!socket.request.session){
console.log('no session in socket')
socket.disconnect();
}
next();
});
Начиная с версии 2.0.0
, теперь вы можете устанавливать заголовки запросов с опцией extraHeaders
:
const socket = io({
transportOptions: {
polling: {
extraHeaders: {
'x-clientid': 'abc'
}
}
}
});
Как я могу добавить URL к этому примеру
константный сокет = io({
TransportOptions: {
опрос: {
дополнительные заголовки: {
'x-clientid': 'abc'
}
}
}
});
@muhammadnasr Передайте параметры во втором аргументе, первым из которых будет URL-адрес:
const socket = io("/your-url-here", {
transportOptions: {
polling: {
extraHeaders: {
'x-clientid': 'abc'
}
}
}
});
Замечательно.
У вас есть пример кода для установки заголовков для iOS и Android SDK?
Большое спасибо.
Можно ли динамически устанавливать заголовки?
Самый полезный комментарий
@muhammadnasr Передайте параметры во втором аргументе, первым из которых будет URL-адрес: