소켓 메세지 읽을때... 채택완료
안녕하세요.
웹소켓 통신중인 사이트의
Request URL 을 가져와서 아래쪽에 넣으면..
(임의로 aaa.html 을 페이지 하나 만들어서 주소만 넣습니다.)
서로 다른 2개의 사이트가 있다면..
어떤 것은..값이 찍히는데..
어떤 것은 아무것도 찍히지가 않더라구요..
가장큰 차이는 개발자탭에서 해당 주소에서 Copy request headers 를 보면..
Cookie: cdn=http://testsite.com; lang=ko; locale=ko; SITESESSIONID=rs2rjisup5qb5i7mrwruykxa32d
이런값이 있고 없고의 차이인듯 합니다. 그 외에는 차이를 잘 모르겠는데..ㅠ
값이 안찍히는 것은 왜 안되는 건지 혹시 경험있으신 분이나..원인을 아시는분 있으실까요...ㅠㅠ
</p>
<p>const Ssscode = document.getElementById("sscode").value;</p>
<p>const webSocket = new WebSocket(Ssscode );</p>
<p>// const webSocket = new WebSocket("ws://test.testsite.com/xxxxxxx"); </p>
<p>// 이런식으로 통신중인 소켓 주소를 가져와 넣습니다.</p>
<p> </p>
<p>webSocket.onopen = function () {
console.log('소켓 연결 성공!'); /// ==> 여기까지는 다 찍힘.
};</p>
<p> </p>
<p>webSocket.onmessage = function (event) {
console.log(event.data); /// ==> 여기에서 message 가 찍히는곳이 있고 안찍히는곳이 있음.</p>
<p>};</p>
<p>
혹시 질문분류 를 잘못 선택했다면...지적해 주세요..^^;;
답변 2개
gpt에게 물어봤어요~도움이 되실지는 모르겠어요~
웹소켓 통신에서 특정 사이트에서는 데이터가 정상적으로 수신되고, 다른 사이트에서는 데이터가 수신되지 않는 경우, 몇 가지 가능한 원인을 고려해볼 수 있습니다. 여기서 주목할 점은 Cookie가 요청 헤더에 포함되어 있는지의 여부입니다. Cookie의 유무가 통신에 영향을 미친다면, 다음과 같은 이유를 고려해볼 수 있습니다:
1. 인증 및 세션 관리
Cookie 포함: 일부 웹소켓 서버는 클라이언트의 인증 상태를 관리하기 위해 쿠키를 사용할 수 있습니다. 예를 들어, 사용자가 로그인한 상태를 유지하기 위해 세션 ID를 쿠키에 저장하고, 웹소켓 연결 시 이 쿠키를 사용해 사용자 인증을 수행할 수 있습니다. 따라서, 쿠키가 포함되어 있지 않은 경우, 서버가 클라이언트를 인증하지 못하고 통신을 제한할 수 있습니다.
2. Same-Origin Policy 및 CORS
웹소켓 연결은 보통 Same-Origin Policy(SOP)의 제약을 받지 않습니다. 그러나, 웹소켓 서버가 특정 출처에서의 연결만을 허용하도록 구성되어 있을 수 있습니다. 이 경우, 서버는 Origin 헤더를 확인하여 연결을 수락하거나 거부할 수 있습니다. Cookie가 포함되지 않은 요청은 SOP 또는 CORS(Cross-Origin Resource Sharing) 정책 위반으로 간주되어 연결이 거부될 수 있습니다.
3. 웹소켓 서버 구성 및 보안 정책
웹소켓 서버의 구성이나 보안 정책에 따라, 특정 요청 헤더가 없는 연결을 거부할 수 있습니다. 예를 들어, 서버가 요청에 Cookie나 특정 사용자 인증 토큰의 존재를 요구하도록 구성되어 있다면, 이러한 정보가 없는 요청은 처리되지 않을 수 있습니다.
4. 네트워크 문제나 서버 상태
네트워크 상의 문제나 서버의 현재 상태로 인해 통신이 원활하게 이루어지지 않을 수도 있습니다. 이는 Cookie와는 직접적인 관련이 없지만, 다른 요인으로 인해 통신이 차단되거나 지연될 수 있음을 의미합니다.
해결 방법
서버 로그 확인: 웹소켓 서버의 로그를 확인하여 연결 실패의 구체적인 원인을 파악합니다.
개발자 도구 사용: 브라우저의 개발자 도구를 사용하여 웹소켓 연결 시도 시 서버로부터 받는 응답을 확인합니다. 특히, 연결 실패 시 서버로부터 반환되는 오류 코드나 메시지를 확인할 수 있습니다.
서버 구성 검토: 웹소켓 서버의 구성을 검토하여 Cookie나 Origin 헤더에 대한 요구 사항이 있는지 확인합니다. 필요한 경우, 서버의 CORS 정책이나 인증 방식을 조정할 수 있습니다.
클라이언트 코드 검증: 클라이언트 측에서 웹소켓 연결을 시도할 때 필요한 요청 헤더가 모두 포함되어 있는지, 올바른 형식으로 전송되고 있는지 확인합니다.
이러한 점들을 고려하여 문제를 해결해 나가는 것이 중요합니다.
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인