AWS API Gateway Websocket - Chrome: ошибка во время рукопожатия WebSocket: отправлено непустой заголовок «Sec-WebSocket-Protocol», но ответа не получено - PullRequest
0 голосов
/ 11 июня 2019

Я пытаюсь использовать функциональность AWS API Gateway WebSocket для связи с моим угловым приложением.В соответствии с требованиями предприятия, мне необходимо защитить конечную точку WebSocket токеном OAuth.

Я написал собственный авторизатор OAuth для проверки токена OAuth.

Этот пользовательский авторизатор работает нормальнос моими конечными точками REST.

Насколько я понимаю, браузеры не могут поддерживать настраиваемые заголовки для WebSocket ( HTTP-заголовки в API клиента Websockets ).

Чтобы обойти это ограничение, Я использую заголовок Sec-WebSocket-Protocol для передачи моего OAuth-токена в целях аутентификации.

(Аутентификация на основе строки запроса может не работать, так как я бы превысил ограничения строки URL)

Я настроил конфигурацию моего API-шлюза так, чтобы принимать Sec-WebSocket-Protocol в качестве заголовка аутентификации, и кажется, что все работает нормально с утилитой WSCAT.

Когда я интегрирую эту конечную точку с моим Angular Client, используя RxJS (https://rxjs -dev.firebaseapp.com / api / webSocket / webSocket ) все этоРешение отлично работает в FireFox и Edge Browser, но Chrome создает исключение рукопожатия, т.е.

WebSocket connection to 'wss://xxxx.com/' failed: Error during WebSocket handshake: Sent non-empty 'Sec-WebSocket-Protocol' header but no response was received

Заголовки запроса:

GET wss://xxxx.com/ HTTP/1.1
Host: xxxx.com
Connection: Upgrade
Pragma: no-cache
Cache-Control: no-cache
Upgrade: websocket
Origin: http://localhost:4200
Sec-WebSocket-Version: 13
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.80 Safari/537.36
Accept-Encoding: gzip, deflate, br
Accept-Language: en-GB,en-US;q=0.9,en;q=0.8
Sec-WebSocket-Key: asdf
Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits
Sec-WebSocket-Protocol: asdf

Заголовки ответа:

HTTP/1.1 101 Switching Protocols
Connection: upgrade
Date: Tue, 11 Jun 2019 06:15:43 GMT
upgrade: websocket
sec-websocket-accept: asdf
sec-websocket-extensions: permessage-deflate
X-Cache: Miss from cloudfront
Via: 1.1 asdf
X-Amz-Cf-Pop: BOM51
X-Amz-Cf-Id: asdf

1 Ответ

0 голосов
/ 29 июня 2019

Это давняя ошибка в AWS WebSocket API

https://forums.aws.amazon.com/thread.jspa?messageID=883536&tstart=0

...