2015-04-16 29 views
5

Obecnie próbuję skonfigurować HTTPS w mojej aplikacji rozruchowej wiosna 1.2. Ta aplikacja wykorzystuje wiele stron internetowych do komunikacji między dwoma serwerami. Kiedy działa na prostym protokole HTTP, wszystko działa dobrze, ale kiedy przełączam go na HTTPS, pojawia się błąd 403 Forbidden zarówno w Firefoksie, jak i w Chrome (nie testowałem go na IE.) Mam konfigurację SimpleCORSFilter, która akceptuje wszystkie połączenia, więc nie myśl, że to jest problem. Wszystkie żądania RESTful za pośrednictwem protokołu HTTPS do tego samego serwera działają, jego tylko sieci Web, które wydają się być zablokowane.
Oto moja websocket Wiosna KonfiguracjaWebsockets over HTTPS 403 Forbidden

@Configuration 
@EnableWebSocketMessageBroker 
public class WebSocketConfig extends   
    AbstractWebSocketMessageBrokerConfigurer { 
    @Override 
    public void configureMessageBroker(MessageBrokerRegistry config) { 
     config.enableSimpleBroker("/topic"); 
     config.setApplicationDestinationPrefixes("/app"); 
    } 
    @Override 
    public void registerStompEndpoints(StompEndpointRegistry registry) { 
     registry.addEndpoint("/simulation").withSockJS(); 
    } 
} 

Oto mój przedni Połączenie koniec websocket

socket = new SockJS(https://my.url + '/simulation'); 
    stompClient = Stomp.over(socket); 
    stompClient.debug = false; 
    stompClient.connect({}, function(frame) { 
     stompClient.subscribe('/topic/', function(status){ 
        // Do something with result 
     }); 
    }); 

EDIT: Jest to błąd w Chrome Console

GET https://localhost:8090/simulation/info 403 (Forbidden) 
stomp.js:8 Whoops! Lost connection to undefined 

EDIT 2: błąd wydaje się być efektem ubocznym aktualizacji z wiosennego rozruchu 1.1 do rozruchu sprężyny 1.2. Będę aktualizował, gdy wskażę, która z zależności powoduje błąd.

+1

jakiekolwiek zabezpieczenie wiosny? – Bozho

+0

Aplikacja obecnie nie korzysta z zabezpieczeń sprężynowych. –

+1

Zajrzyj tutaj: http://stackoverflow.com/questions/22758360/websockets-over-https-with-spring-boot-1-0-0-rc5-and-tomcat-8-0-3 –

Odpowiedz

13

Spróbuj tego:

@Override 
public void registerStompEndpoints(StompEndpointRegistry registry) { 
    registry.addEndpoint("/simulation").setAllowedOrigins("*").withSockJS(); 
} 

Należy pamiętać, że dopuszczenie do wszystkich źródeł pochodzenia mógłby nałożyć żądania Cross-Site fałszerstwa. Zapoznaj się z https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF), aby znaleźć sposoby obrony przed nim.

+0

Jesteś ten człowiek. – Greyshack

+0

Czy potrzebne jest coś innego? Próbuję to z grails 3.0.9 i grails-spring-websocket plugin 2.1.0 i to nie działa – Eylen

+0

W końcu jestem w stanie połączyć, ale musiałem również dodać CorsFilter w java i zarejestrować go w resources.groovy. Przechwytywacze Grails nie działają dla tego – Eylen