여기에도 비슷한 오류가있는보고가 있습니다 : https://groups.google.com/forum/?fromgroups=#!topic/sockjs/QNtA1_p_arU,하지만 내 문제가 다른 것 같습니다.IE9에 문제가있는 SockJS
내 설정 : 클라이언트가 SockJS에 https://www.mysite.com/sockjs
에 연결하고 실제 페이지가 https://www.mysite.com/blah/blah/blah
에 게재됩니다. 페이지의 모든 외부 요소 (예 : css 및 js)는 https으로 제공되며 SockJS-Client (https://d1fxtkz8shb9d2.cloudfront.net/sockjs-0.3.js 포함)는 최신 릴리스의 경우 0.3.4이어야합니다.). 백엔드는 SockJS-Tornado로 만들어졌습니다.
문제 1 : 내가 사용하는 다음과 같은 프로토콜을 지정합니다
var options = {protocols_whitelist: ["websocket", "xhr-streaming", "xdr-streaming", "xhr-polling", "xdr-polling", "iframe-htmlfile", "iframe-eventsource", "iframe-xhr-polling"], debug: true};
conn = new SockJS("https://www.mysite.com/sockjs", options);
그러나, IE9는 단순히 최악의 가능한 프로토콜 iframe-htmlfile
를 사용하는 것 I는 서버 로그에서 다음을 참조 같이
INFO:root:200 GET /sockjs/info?t=1353062888578 (127.0.0.1) 0.51ms
INFO:root:200 GET /sockjs/iframe.html (127.0.0.1) 22.21ms
왜 xdr-streaming
또는 xdr-polling
을 사용하지 않습니까? SockJS doc에서는 'IE8, 9 (cookies = no)'아래에이 두 프로토콜을 표시합니다. 이는 SockJS가 브라우저에서 쿠키를 사용할 수 없을 때만 사용한다는 것을 의미합니까?
문제 2는 : 프로토콜 iframe-htmlfile
를 사용하여, 사용자는 혼합 된 콘텐츠 문제를 신호 페이지,에 'Only Secure Content is Displayed'
경고를 받게됩니다. 그러나 테스트를 거친 다른 브라우저 (예 : Chrome, FireFox, Safari)는 이전에 언급했듯이 페이지의 모든 외부 리소스가 https를 통해 제공됩니다. 왜 이런거야? 이 특정 프로토콜 iframe-htmlfile
과 관련이 있습니까?
동시에 SockJS는 서버에 연결하여 msg를 보내려합니다. 이것은 서버 로그에 표시되는 내용입니다.
INFO:root:200 GET /sockjs/info?t=1353062888578 (127.0.0.1) 0.51ms
INFO:root:200 GET /sockjs/iframe.html (127.0.0.1) 22.21ms
INFO:root:200 GET /sockjs/info?t=1353062922712 (127.0.0.1) 0.39ms
connection openned for: 127.0.0.1
INFO:root:200 GET /sockjs/info?t=1353062963868 (127.0.0.1) 0.36ms
WARNING:root:Read error on 12: [Errno 104] Connection reset by peer
WARNING:root:error on read
Traceback (most recent call last):
File "/home/ml/envs/.virtualenvs/sockapp/local/lib/python2.7/site-packages/tornado/iostream.py", line 355, in _handle_read
if self._read_to_buffer() == 0:
File "/home/ml/envs/.virtualenvs/sockapp/local/lib/python2.7/site-packages/tornado/iostream.py", line 422, in _read_to_buffer
chunk = self._read_from_socket()
File "/home/ml/envs/.virtualenvs/sockapp/local/lib/python2.7/site-packages/tornado/iostream.py", line 403, in _read_from_socket
chunk = self.socket.recv(self.read_chunk_size)
error: [Errno 104] Connection reset by peer
subject disconnection from: None
Message handled in: 0 ms
INFO:root:200 GET /sockjs/369/rpf1d1vl/htmlfile?c=_jp.aepnvri (127.0.0.1) 60006.30ms
마지막 오류는 시간 초과 것으로 보입니다. IE9에서 경고 대화 상자를 닫을 때 연결이 열리는 것처럼 보이지만 나중에 브라우저에서 아무런 메시지도받지 못합니다 (브라우저가 연결이 열리 자마자 메시지를 보내야 함). 이 내용이 전에 혼합 된 내용과 관련이 있는지 궁금합니다.