gpt4 book ai didi

spring - Springboot 和 Angular Websocket 的 CORS 问题

转载 作者:行者123 更新时间:2023-12-04 14:28:28 25 4
gpt4 key购买 nike

我有两个服务来构建 Spring Boot 应用程序

但我总是遇到这样的 CORS 问题

Access to XMLHttpRequest at '.../websocket-cr/info?t=1581585481804' from origin'http://localhost:8080' 
has been blocked by CORS policy: The value of the 'Access-Control-Allow-Origin'
header in the response must not be the wildcard '*' when the request's credentials mode is 'include'.
The credentials mode of requests initiated by the XMLHttpRequest is controlled by the withCredentials.


8082上的Springboot服务
    public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/websocketcr").
setAllowedOrigins("http://localhost:8080").withSockJS();
}

8080 上的 Angular 服务
    var socket = new SockJS('http://localhost:8080/websocket-cr');
//socket.withCredentials = true ;
stompClient = Stomp.over(socket);

我试过了
    setAllowedOrigins("http://localhost:8080").withSockJS();
setAllowedOrigins("*").withSockJS();

或使用 javascript 中的任何地方的 CORS
    var socket = new SockJS('http://cors-anywhere.herokuapp.com/http://localhost:8082/websocket-cr');
socket.withCredentials = true ;

什么是最好的方法来做到这一点

我应该为我的后端服务器制作角度代理吗?

或者可以通过 setAllowedOrigins('host:port')

最佳答案

在 SpringBoot 服务的 Main 类中,注入(inject)以下 bean,它将起作用

@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurer () {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**").allowedMethods("GET", "POST", "PUT", "DELETE").allowedHeaders("*")
.allowedOrigins("*");
}
};
}

关于spring - Springboot 和 Angular Websocket 的 CORS 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60205312/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com