Разница между ws и wss?
какова процедура изменения ws в wss?
является ли wss обновлением по обычному HTTP или wss работает только HTTPS?
webSocket = new WebSocket("ws://localhost:port/Esv/ocp");
отлично работает, когда я изменил ws на wss
webSocket = new WebSocket("wss://localhost:port/Esv/ocp");
он показывает эту ошибку:
ошибка в установлении соединения: net:: ERR_SSL_PROTOCOL_ERROR
1 ответов
короткая версия
SSL или нет SSL
вы можете выдача сертификата SSL. Правило точки соединения может быть кратко охарактеризовать как:
-
wss
соединяется сhttps only
-
ws
соединяется сhttp
и наоборот:
-
https
принимаетwss only
-
http
принимаетws only
ошибки
следующие ситуации приведут вас к ошибке (тесты, выполненные в Firefox):
- если вы хотите подключить
wss
подключение кhttp
конечной точки. В моих тестах у меня былInvalidStateError: An была предпринята попытка использовать объект, который не используется или больше не используется
- если вы хотите подключить
ws
подключение кhttps
endpoint, у вас будет ошибкаSecurityError: операция небезопасна.
формальный ответ
Библия websocket является RFC 6455. В разделе 4.1.5:
если / secure/ верно, клиент должен выполнить рукопожатие TLS по соединению после открытия соединения и перед отправкой данных рукопожатия [RFC2818]. Если это не удается (например, сертификат сервера не может быть проверен), то клиент должен сбой подключения WebSocket и прервать соединение. В противном случае вся дальнейшая связь по этому каналу должна проходить через зашифрованный туннель [RFC5246].
в безопасное флаг определяется URI. Раздел 3 определяет, что является безопасное
URI называется " secure "(и говорится, что" флаг secure установлен"), если компонент схемы соответствует" WSS " без учета регистра.
TL; DR
если вы хотите использовать wss
:
- у вас должен быть активирован SSL
- ваша конечная точка должна быть защищена (
https://...
): "безопасность понижение рейтинга " не допускается
если вы хотите использовать ws
:
- убедитесь, что ваша конечная точка не имеет SSL включен (
http://...
)