尝试在spring boot应用程序中使用带配置的nginx代理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: 403spring:
o.s.web.cors.DefaultCorsProcessor : Reject: 'http://localhost' origin is not allowed
o.s.web.servlet.DispatcherServlet : Completed 403 FORBIDDEN, headers={masked}代理web套接字连接的正确方式是什么?
发布于 2020-01-28 21:42:24
找到了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上修复它
https://stackoverflow.com/questions/59949219
复制相似问题