[상황]
로컬에서 웹소켓 테스트용으로 다음 사이트를 이용해왔다.
https://jiangxy.github.io/websocket-debug-tool/
WebSocket Debug Tool
jiangxy.github.io
알 사람들은 다 아는 유명한 툴이다.
문제는, 기존에는 모든 api로부터의 연결을 허용했었기에 .setAllowedOrigins()에 들어가는 api를 우리의 도메인명인 "https://hyu1335.cloud"로 한정해야 했다는 것이다.
원래 "*"를 넣어 모든 도메인으로부터의 연결을 허용했지만, 그럼 모두에게 열린 문이 되기에 위험하다.
그래서 http://localhost:[포트번호]를 추가로 더해주었다.
[내 예상]
언급한 사이트에서 ws://localhost:[포트번호]/ws로 url을 설정하고 Auth Header만 잘 입력해주면 연결이 되리라 생각했다.
[결과]
어라? 아무리 connect를 눌러도 연결이 되지 않았다.
[원인]
알고봤더니, setAllowedOrigins() 안에 서버 주소를 넣었던 것이 잘못이었다. "http://localhost:[포트번호]"는 웹소켓이 실행되고 있는 서버의 주소이지, setAllowedOrigins()에 들어갈 화이트리스트는 아니었던 것이다.
.setAllowedOrigins()는 파라미터 안에 문자열 형태의 도메인에서의 연결(CONNECT, SUBSCRIBE를 모두 포함)요청만 허용하겠다는 것이다. 즉 일종의 도메인 화이트리스트다.
비유하자면 특정 집 주소에서 온 사람들만 받겠다고 한 것인데, 거기에 내 집 주소를 적은 셈이다. 당연히 https://jiangxy.github.io 에서 전송된 내 요청은 화이트리스트에 없었기에 막힐 수밖에 없었다.
[회고]
어차피 배포할 땐 지워야 하는데, 테스트할때만 "*"로 열어놓을 걸 그랬다.
하지만 이 덕분에 setAllowedOrigins를 지금껏 잘못 이해하고 있었다는 것을 깨달았다. 그리고 원하는 경우 특정 웹사이트에서만 웹소켓 연결 요청을 허용할 수 있다는 것을 알았다. 그래도 와일드카드로 다 열어놓는 것보단 안전하지 않은가.
'Projects > [Final] Shopping Mall Project' 카테고리의 다른 글
| 가상 스레드 적용 후 테스트 결과 (결제 생성) (0) | 2026.05.08 |
|---|---|
| 가상 스레드 적용 전 테스트 결과 (결제 생성) (0) | 2026.05.07 |
| [트러블슈팅] BeanDefinitionOverrideException 해결하기 (0) | 2026.05.07 |
| Request Body 재사용 불가로 Internal API 테스트 400 오류 (0) | 2026.05.05 |
| Spring Security 커스텀 필터 순서 오류로 통합 테스트 실패 (0) | 2026.05.05 |