2016-10-25 16 views
4

Nginx + flask-socketio + aws elb를 사용 중이며 https에 URL이로드되면 다음과 같은 오류 메시지가 표시됩니다.혼합 된 콘텐츠 : https의 페이지가 https를 통해로드되었지만 안전하지 않다는 메시지가 표시됩니다.

$.ajax({ 
url:'//your_site.com/handler',dataType:'json',type:'get', 
success: function(data){...}, 
complete:function(xhr, textStatus){...} 
}); 
: 인스턴스에 대한 Nginx에와 소켓,
socket.io.min.js:2 Mixed Content: The page at 'https://localhost/' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://localhost/socket.io/1/?t=1477375737508'. This request has been blocked; the content must be served over HTTPS.d.handshake @ socket.io.min.js:2 
socket.io.min.js:2 XMLHttpRequest cannot load http://localhost/socket.io/1/?t=1477375737508. Failed to start loading. 

답변

2

당신이 (대신 http://your_site.com/handler의, //your_site.com/handler) 우측 아약스 URL을 사용하고 있는지 확인, 당신의 .js 파일로 봐,이에 도움을 주시기 바랍니다,
+2

사실 나는 js 파일에서 간과하고있는 모든 것을 보았습니다. 지금은 "ws : //example.com/socket.io/1/websocket/654646646 '에 대한 WebSocket 연결에 실패했습니다 : WebSocket 핸드 셰이크 중 오류 : 예기치 않은 응답 코드 : 500" – IAmHomes

+1

아마도이 링크가 도움이 될 수 있습니다 : [링크 1] (https://github.com/websocket-rails/websocket-rails/issues/378#issuecomment-170352798) [링크 2] (https://github.com/websocket-rails/websocket) -rails/issues/211 # issuecomment-57744925) –

1

혼합 콘텐츠는 고용 된 보안 정책입니다. 현재의 브라우저에서 "보안"HTTPS를 통해 가져온 정보가 비보안 컨텍스트로 유출되는 것을 방지하는 것이 그 목표입니다. 따라서 HTTPS와 함께 제공되는 사이트는 HTTPS 또는 기타 TLS 지원 프로토콜을 사용하여 콘텐츠를 가져와야합니다.

TLS를 통한 웹 소켓의 URI 접두어는 wss이고 일반 웹 소켓은 ws입니다. ChromiumFirefoxhttps + ws 혼합 콘텐츠로 간주되므로 해당 설정을 거부합니다. 따라서 ws 대신 secure/HTTPS 컨텍스트의 URI 접두어로 wss을 사용해야합니다.