nginx 역방향 에이전트 웹 소켓 403 오류 문제

nginx 버 전:1.10.3
nginx 1.3 이후 에 야 웹 소켓 을 지원 합 니 다.
프로젝트 는 서버 에서 웹 으로 메 시 지 를 전송 해 야 하기 때문에 H5 웹 소켓 을 사용 합 니 다.
js 코드:
  var websocket = null;
    var hostname = location.hostname;
    var port = location.port;
    var pathName=window.document.location.pathname;
    var projectName=pathName.substring(0,pathName.substr(1).indexOf('/')+1);
    if ('WebSocket' in window) {
        websocket = new WebSocket("ws://" + hostname + ":" + port + projectName + "/websocket.do");
    }
    else if ('MozWebSocket' in window) {
        websocket = new MozWebSocket("ws://" + hostname + ":" + port + projectName + "/websocket.do");
    }
    else {
        websocket = new SockJS(hostname + ":" + port + projectName + "/sockjs/websocket.do");
    }

    //   
    websocket.onopen = function (event) {
        console.log("    ");
    };
//  ...

서버 에서 springMVC 의 웹 소켓 을 사용 하여.do 요청 을 설정 합 니 다.
//      websocket  
        webSocketHandlerRegistry.addHandler(goodsWebsocketHandler(),"/websocket.do").addInterceptors(new HandshakInterceptor());

        //       websocket  
        webSocketHandlerRegistry.addHandler(goodsWebsocketHandler(),"/sockjs/websocket.do").addInterceptors(new HandshakInterceptor()).withSockJS();

nginx 프 록 시 포트 요청 을 사용 할 때 403 을 직접 보고 합 니 다.자 료 를 찾 아 보 니 nginx 는 프로 토 콜 헤드 를 설정 해 야 웹 소켓 을 수리 할 수 있 습 니 다.
설정 은 다음 과 같 습 니 다:
location /xhx/ {
			proxy_pass $http_host;
			proxy_http_version 1.1;  
			proxy_set_header Upgrade $http_upgrade;  
			proxy_set_header Connection "upgrade"; 
        }

결 과 는 403 입 니 다.도 모 는 Origin 이 일치 해 야 한 다 는 것 을 알 게 되 었 습 니 다.do 가 요청 한 코드 를 수정 하고 Origin 을 무시 하 며 다음 코드 를 추가 해 야 합 니 다.
.setAllowedOrigins("*")

4.567913.다시 시도 해 보 세 요.OK,문제 해결!

좋은 웹페이지 즐겨찾기