ws

Hunter Joe·2026년 3월 18일

⏺ allowRequest는 Socket.IO가 모든 연결 요청에 대해 가장 먼저 실행하는 검증 함수입니다.

흐름

클라이언트가 WebSocket 연결 시도

allowRequest(req, cb) 실행

req.headers.origin 확인 (요청을 보낸 출처)

├─ origin이 없음 → cb(null, true) → 연결 허용
│ (Postman, curl, 서버 간 통신 등 브라우저가 아닌 경우)

├─ origin이 corsOrigin 목록에 있음 → cb(null, true) → 연결 허용
│ (예: 'http://localhost:3010'이 목록에 포함)

└─ origin이 목록에 없음 → cb('CORS_NOT_ALLOWED', false) → 연결 거부
(예: 'http://evil.com'에서 접근 시도)

cb(err, success)의 의미

  • cb(null, true) — 에러 없음, 연결 승인
  • cb('CORS_NOT_ALLOWED', false) — 에러 메시지와 함께 연결 거부 왜 필요한가 cors 옵션만으로는 HTTP의 preflight(OPTIONS) 요청에만 적용됩니다. WebSocket upgrade 요청은 preflight가 없어서 브라우저가 CORS를 강제하지
    않습니다. 그래서 allowRequest로 서버 측에서 직접 Origin을 검사해야 합니다.
profile
Improvise, Adapt, Overcome

0개의 댓글