Skip to content

Commit 53149a0

Browse files
committed
Fix: Add Access-Control-Allow-Credentials header for handshaking response
1 parent c6b84cf commit 53149a0

File tree

2 files changed

+34
-36
lines changed

2 files changed

+34
-36
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package com.vietle.mychatapi.config;
2+
3+
import java.util.Map;
4+
import org.springframework.http.server.ServerHttpRequest;
5+
import org.springframework.http.server.ServerHttpResponse;
6+
import org.springframework.web.socket.WebSocketHandler;
7+
import org.springframework.web.socket.server.HandshakeInterceptor;
8+
9+
public class CustomHandshakeInterceptor implements HandshakeInterceptor {
10+
11+
@Override
12+
public boolean beforeHandshake(
13+
ServerHttpRequest request,
14+
ServerHttpResponse response,
15+
WebSocketHandler wsHandler,
16+
Map<String, Object> attributes
17+
) throws Exception {
18+
response.getHeaders().add("Access-Control-Allow-Credentials", "true");
19+
return true;
20+
}
21+
22+
@Override
23+
public void afterHandshake(
24+
ServerHttpRequest request,
25+
ServerHttpResponse response,
26+
WebSocketHandler wsHandler,
27+
Exception exception) {
28+
// After handshake logic, if needed
29+
}
30+
}

src/main/java/com/vietle/mychatapi/config/WebSocketConfig.java

+4-36
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,9 @@
33
import org.springframework.beans.factory.annotation.Value;
44
import org.springframework.context.annotation.Configuration;
55
import org.springframework.messaging.simp.config.MessageBrokerRegistry;
6-
import org.springframework.web.socket.WebSocketHandler;
7-
import org.springframework.web.socket.WebSocketSession;
86
import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
97
import org.springframework.web.socket.config.annotation.StompEndpointRegistry;
108
import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer;
11-
import org.springframework.web.socket.config.annotation.WebSocketTransportRegistration;
12-
import org.springframework.web.socket.handler.WebSocketHandlerDecorator;
13-
import org.springframework.web.socket.handler.WebSocketHandlerDecoratorFactory;
149

1510
@Configuration
1611
@EnableWebSocketMessageBroker
@@ -20,42 +15,15 @@ public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
2015

2116
@Override
2217
public void registerStompEndpoints(StompEndpointRegistry registry) {
23-
registry.addEndpoint("/ws").setAllowedOriginPatterns(allowedOrigins).withSockJS();
18+
registry.addEndpoint("/ws")
19+
.setAllowedOriginPatterns(allowedOrigins)
20+
.addInterceptors(new CustomHandshakeInterceptor())
21+
.withSockJS();
2422
}
2523

2624
@Override
2725
public void configureMessageBroker(MessageBrokerRegistry registry) {
2826
registry.setApplicationDestinationPrefixes("/app");
2927
registry.enableSimpleBroker("/topic");
3028
}
31-
32-
// @Override
33-
// public void configureWebSocketTransport(WebSocketTransportRegistration registration) {
34-
// registration.addDecoratorFactory(new WebSocketHandlerDecoratorFactory() {
35-
// @Override
36-
// public WebSocketHandler decorate(WebSocketHandler handler) {
37-
// return new WebSocketHandlerDecorator(handler) {
38-
// @Override
39-
// public void afterConnectionEstablished(WebSocketSession session) throws Exception {
40-
// super.afterConnectionEstablished(session);
41-
// session.getHandshakeHeaders().add("Access-Control-Allow-Origin", "*");
42-
// }
43-
// };
44-
// }
45-
// });
46-
// }
47-
48-
// @Override
49-
// public boolean configureMessageConverters(List<MessageConverter> messageConverters) {
50-
// DefaultContentTypeResolver resolver = new DefaultContentTypeResolver();
51-
// resolver.setDefaultMimeType(APPLICATION_JSON);
52-
// MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter();
53-
// converter.setObjectMapper(new ObjectMapper());
54-
// converter.setContentTypeResolver(resolver);
55-
// messageConverters.add(new StringMessageConverter());
56-
// messageConverters.add(new ByteArrayMessageConverter());
57-
// messageConverters.add(converter);
58-
//
59-
// return false;
60-
// }
6129
}

0 commit comments

Comments
 (0)