Возможно ли иметь WebSockets с HTTPS?
При переключении на HTTPS мой WebSocket возвращает ошибку безопасности и отлично работает с обычным HTTP.
Ниже фрагмент;
socket = new WebSocket("ws://my_www:1235");
Возможно ли иметь WebSockets с HTTPS?
При переключении на HTTPS мой WebSocket возвращает ошибку безопасности и отлично работает с обычным HTTP.
Ниже фрагмент;
socket = new WebSocket("ws://my_www:1235");
Ответы:
Соединение WebSocket начинает свою жизнь с рукопожатия HTTP или HTTPS. Когда доступ к странице осуществляется через HTTP, вы можете использовать WS или WSS (WebSocket secure: WS over TLS). Однако, когда ваша страница загружается через HTTPS, вы можете использовать только WSS - браузеры не позволяют «понизить» безопасность.
Вы не можете использовать WebSockets через HTTPS, но вы можете использовать WebSockets через TLS (HTTPS - это HTTP через TLS). Просто используйте "wss: //" в URI.
Я считаю, что последняя версия Firefox не позволит вам использовать веб-сокеты без TLS со страницы HTTPS, но обратное не должно быть проблемой.
wss://
to ws://
. Итак, я использую, wss://ws.domain.com
а apache применяет к нему прокси и перенаправляет запрос на то, где запущен сервер WS. например: ws://10.12.23.45:5641/server.php
. и я знаю, что это очень плохое решение, хотя оно работает для меня. Буду признателен за вашу помощь, если вы проведете меня через конфигурацию apache. например: куда положить и .cert
т. д. спасибо!
1 дополнительное предостережение (помимо ответа kanaka / peter): если вы используете WSS и сертификат сервера неприемлем для браузера, вы можете не получить диалоговое окно, отображаемое браузером (как это происходит с веб-страницами). Это связано с тем, что WebSockets рассматривается как так называемый «субресурс», а принятие сертификата / исключение безопасности / любые диалоги не отображаются для субресурсов.
alert()
?