Closed binchoo closed 2 years ago
웹 소켓 핸들러 매핑을 등록할 때, allowedOrigins
를 설정 가능한데요.
기본값은 빈 리스트이며, 이 경우 동일한 오리진의 요청만 핸들러가 처리 해 줍니다.
OriginHandshakeInterceptor
는
핸드셰이크 요청 헤더의 Origin과 allowedOrigins
의 일치를 확인하는 인터셉터입니다.
여기서 WebUtils.isSameOrigin()
을 호출하는데
까보면 URL의 스키마 역시 같아야만 동일한 오리진으로 판단합니다.
핸들러가 인지하는 핸드셰이크 URL과 오리진 헤더의 URL은 각각 스키마가 ws://
, http://
로 다르죠.
그러니 핸드셰이크 인터셉터가 실패하고 403 에러를 내놓게 됩니다.
웹 소켓 핸들러의 allowedOrigin
를 빈 리스트로 두면 무조건 403 오류를 만나는 구조입니다;
http://
형식의 허용 오리진을 추가해 줍니다.
@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(echoHandler(), "/echoHandler").setAllowedOrigins("http://127.0.0.1:8080");
}
@Bean
public EchoHandler echoHandler() {
return new EchoHandler();
}
}
질문
17장 첫 번째 예제인 [websocket-api-cfg] 에서 웹 소켓 연결이 되지 않는 현상.
상세 내용
연결 버튼 클릭하여 웹소켓 연결 시도> 곧이어 "연결 해제됨" 상태 출력됨 & 실제 연결 수립 없음.
연관 챕터
103
@caffeine-library/readers-pro-spring-5