HTTPS로 WebSocket을 사용할 수 있습니까?
HTTPS로 전환 할 때 내 WebSocket은 보안 오류를 반환하고 일반 HTTP와 완벽하게 작동합니다.
아래는 스 니펫입니다.
socket = new WebSocket("ws://my_www:1235");
답변
WebSocket 연결은 HTTP 또는 HTTPS 핸드 셰이크로 시작됩니다. HTTP를 통해 페이지에 액세스 할 때 WS 또는 WSS (WebSocket 보안 : WS over TLS)를 사용할 수 있습니다. 그러나 페이지가 HTTPS를 통해로드되면 WSS 만 사용할 수 있습니다. 브라우저는 보안을 “다운 그레이드”할 수 없습니다.
답변
HTTPS를 통해 WebSocket을 사용할 수 없지만 TLS를 통해 WebSocket을 사용할 수 있습니다 (HTTPS는 TLS를 통한 HTTP). URI에서 “wss : //”를 사용하십시오.
최신 버전의 Firefox는 HTTPS 페이지에서 TLS가 아닌 WebSocket을 사용하도록 허용하지 않지만 그 반대는 문제가되지 않습니다.
답변
1 추가주의 사항 (kanaka / peter의 답변 외에) : WSS를 사용하고 서버 인증서가 브라우저에서 허용되지 않는 경우 브라우저 렌더링 대화 상자 가 표시되지 않을 수 있습니다 (웹 페이지에서 발생하는 것과 같은). 이는 WebSocket이 소위 “하위 리소스”로 취급되고 인증서 수락 / 보안 예외 / 하위 리소스에 대해 렌더링되지 않는 대화 상자가 있기 때문입니다.