Я пытаюсь найти решение о том, как подключить VueJs и Spring через WebSocket.
Config WebSocket (Spring)
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/gs-guide-websocket")
.setAllowedOrigins("http://localhost:8080")
.withSockJS();
}
У меня есть попробовал несколько вариантов с .setAllowedOrigins("")
, например "*", "http://localhost: 8080 " или не использовал его.
У меня также есть CORS conf в моем проекте.
@Bean
public CorsConfigurationSource corsConfigurationSource() {
CorsConfiguration configuration = new CorsConfiguration();
configuration.setAllowedOrigins(Arrays.asList("http://localhost:8080"));
configuration.setAllowedMethods(Arrays.asList("GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS"));
configuration.setAllowedHeaders(Arrays.asList("authorization", "content-type", "x-auth-token"));
configuration.setExposedHeaders(Arrays.asList("x-auth-token"));
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", configuration);
return source;
}
В моем CORS conf я перепробовал много вариантов, но безрезультатно: (
И последнее - это соединение на стороне клиента (VueJs):
connect() {
this.socket = new SockJS("http://localhost:8081/gs-guide-websocket");
this.stompClient = Stomp.over(this.socket);
this.stompClient.connect(
{},
frame => {
this.connected = true;
console.log(frame);
this.stompClient.subscribe("/topic/chat/1", tick => {
console.log(tick);
this.received_messages.push(JSON.parse(tick.body).content);
});
},
error => {
console.log(error);
this.connected = false;
}
);
}
И на всем, что я пробовал, я получаю эту ошибку:
Доступ к XMLHttpRequest в 'http://localhost: 8081 / gs-guide-websocket / info? t = 1583167396687 'from origin' http://localhost: 8080 'заблокировано политикой CORS: значение заголовка' Access-Control-Allow-Credentials 'в ответе равно '', который должен иметь значение 'true', когда режим учетных данных запроса - 'include'. Режим учетных данных запросов, инициированных XMLHttpRequest, контролируется атрибутом withCredentials.
* 103 4 *
Есть ли какое-нибудь решение, которое я могу использовать, чтобы оно работало?
К вашему сведению:
- Пружина:
localhost:8081
- VueJs:
localhost:8080
Спасибо за помощь всем:)