gpt4 book ai didi

java - Spring Boot中使用nginx代理websocket时出现CORS错误

转载 作者:行者123 更新时间:2023-12-01 18:40:11 27 4
gpt4 key购买 nike

尝试使用带配置的 nginx 在 Spring Boot 应用程序中代理 websocket 连接(没有 nginx 也可以正常工作)

server {
listen 80;
listen [::]:80;

server_name example.com;

location / {
proxy_pass http://localhost:8080/;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;

proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
}
}

但是得到以下错误js:

WebSocket connection to 'ws://localhost/gs-guide-websocket/776/ybicrrun/websocket' failed: Error during WebSocket handshake: Unexpected response code: 403

Spring :

o.s.web.cors.DefaultCorsProcessor        : Reject: 'http://localhost' origin is not allowed
o.s.web.servlet.DispatcherServlet : Completed 403 FORBIDDEN, headers={masked}

代理 Web 套接字连接的正确方法是什么?

最佳答案

找到了一种方法 configure allowed origin in spring :

import org.springframework.web.socket.config.annotation.EnableWebSocket;
import org.springframework.web.socket.config.annotation.WebSocketConfigurer;
import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry;

@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {

@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(myHandler(), "/gs-guide-websocket").setAllowedOrigins("http://localhost");
}

@Bean
public WebSocketHandler myHandler() {
return new MyHandler();
}

}

仍然认为这不是一个正确的方法,正在寻找如何在 nginx 上修复它

关于java - Spring Boot中使用nginx代理websocket时出现CORS错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59949219/

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