2015-04-16 2 views
5

В настоящее время я пытаюсь установить HTTPS в приложении для загрузки весны 1.2. Это приложение использует множество веб-интерфейсов для связи между двумя серверами. Когда он работает на простом HTTP, все работает нормально, но когда я переключу его на HTTPS, я получаю 403 Forbidden ошибку как в Firefox, так и в Chrome (не тестировал ее на IE.) У меня есть настройка SimpleCORSFilter, которая принимает все подключения, поэтому я не думайте, что это проблема. Все запросы RESTful по HTTPS на работу одного и того же сервера, его просто websockets, которые, кажется, заблокированы.
Вот мой WebSocket Spring КонфигурацияWebsockets 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(); 
    } 
} 

Вот мой передний разъем конец 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: Это ошибка в Chrome консоли

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

EDIT 2: Это ошибка, похоже, является побочным эффектом обновления в последнее время от весенней загрузки 1.1 до весенней загрузки 1.2. Я буду обновлять, когда укажу, какая из зависимостей вызывает ошибку.

+1

любая пружинная защита? – Bozho

+0

Приложение в настоящее время не использует весеннюю безопасность. –

+1

Посмотрите здесь: http://stackoverflow.com/questions/22758360/websockets-over-https-with-spring-boot-1-0-0-rc5-and-tomcat-8-0-3 –

ответ

13

Попробуйте это:

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

Советуйте, что позволяет происхождение всех источников может ввести Cross-Site Request Подделка. Обратитесь к https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF) за способы защиты от него.

+0

Вы тот человек. – Greyshack

+0

Нужно что-то еще? Я пытаюсь сделать это с помощью grails 3.0.9 и grails-spring-websocket plugin 2.1.0, и он не работает – Eylen

+0

Наконец-то я смог подключиться, но мне также пришлось добавить CorsFilter в java и зарегистрировать его в resources.groovy. Перехватчики Grails не работают для этого – Eylen