Чи можливо мати 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: WS через TLS). Однак, коли ваша сторінка завантажується через HTTPS, ви можете використовувати лише WSS - браузери не дозволяють «знижувати» захист.
Ви не можете використовувати WebSockets через HTTPS, але ви можете використовувати WebSockets через TLS (HTTPS - це HTTP через TLS). Просто використовуйте "wss: //" в URI.
Я вважаю, що остання версія Firefox не дозволить вам використовувати веб-сокети, що не належать до TLS, зі сторінки HTTPS, але зворотне не повинно бути проблемою.
wss://
до ws://
. Отже, я використовую wss://ws.domain.com
і apache, застосовую проксі-сервер до нього та перенаправляю запит, де працює WS-сервер. наприклад: ws://10.12.23.45:5641/server.php
. і я знаю, що це дуже погане рішення - хоча це працює на мене. Буду вдячний за вашу допомогу, якщо ви проведете мене через конфігурацію apache. наприклад: куди поставити і .cert
т.д. подяки!
1 додатковий застереження (окрім відповіді kanaka / peter): якщо ви використовуєте WSS, а серверний сертифікат не прийнятний для браузера, ви можете не отримати жодного діалогового вікна браузера (як це відбувається для веб-сторінок). Це пов’язано з тим, що WebSockets трактується як так званий "субресурс", і сертифікат приймання / виключення безпеки / будь-які діалоги не надаються для субресурсів.
alert()
?