我的应用程序使用SockJS和
Spring Framework.我的服务器上有一个反向代理,用于将https请求重定向到tomcat容器.配置:
<VirtualHost *:443> ProxyPreserveHost On ProxyPass /boot http://127.0.0.1:8080/boot/ ProxyPassReverse /boot http://127.0.0.1:8080/boot/ ServerName MY_DOMAIN.com SSLEngine on SSLProtocol all SSLCertificateFile /etc/apache2/ssl/muhamo.crt SSLCertificateKeyFile /etc/apache2/ssl/muhamo.key SSLCACertificateFile /etc/apache2/ssl/bundl.crt </VirtualHost>
如何配置虚拟主机以将wss请求转发给我的应用程序?我收到如下错误消息:
opening Web Socket... sockjs.js:1213 WebSocket connection to 'wss://MY_DOMAIN.com/boot/tracking/557/jcf7btih/websocket' Failed: Error during WebSocket handshake: Unexpected response code: 403 sockjs.js:807 POST https://MY_DOMAIN.com/boot/tracking/557/7cl9qov2/xhr_streaming 403 (Forbidden) sockjs.js:807 POST https://MY_DOMAIN.com/boot/tracking/557/cvl8ti6k/xhr 403 (Forbidden)
解决方法
我不知道你是否解决了这个问题,但我遇到了同样的问题.
我认为问题出在apache服务器上,但它是在Spring端. 403代码是线索.
我认为问题出在apache服务器上,但它是在Spring端. 403代码是线索.
在我的情况下,除了你的配置(有必要的改编),我做的是添加以下内容:
# disable forward proxying ProxyRequests Off # proxy wss:// to ws:// ProxyPassMatch ^/(.*)/websocket ws://localhost:8080/$1/websocket # proxy ws fallbacks ProxyPass /ws http://localhost:8080/ws ProxyPassReverse /ws http://localhost:8080/ws
在Spring(Boot)方面:
@Configuration @EnableWebSocketMessagebroker public class WebSocketConfig extends AbstractWebSocketMessagebrokerConfigurer { @Override public void configureMessagebroker(MessagebrokerRegistry config) { config.enableSimplebroker("/topic"); } @Override public void registerStompEndpoints(StompEndpointRegistry registry) { registry.addEndpoint("/ws").setAllowedOrigins("*").withSockJS(); } }
setAllowedOrigins(“*”)是克服403错误的缺失部分.
干杯
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。