【发布时间】:2018-09-11 06:06:46
【问题描述】:
我有一个 SpringBoot 服务器在 localhost:8080 上运行 和 localhost:3000 上的 npm(服务于 React 应用程序)
每当我尝试与 spring 建立 websocket 连接时,它都会显示在浏览器的控制台 (Firefox Nightly) 上:
Cross-Origin Request Blocked: The Same Origin Policy disallows reading
the remote resource at http://localhost:8080/ws/info?t=1522629329791.
(Reason: CORS header ‘Access-Control-Allow-Origin’ does not match
‘http://localhost:8080/ws/info’).
我创建了一个WebSocketMessageBrokerConfigurer 类并尝试将setAllowedOrigins 宽度设置为null 和http://localhost:3000(以及127.0.0.1):
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/ws")
.setAllowedOrigins("http://localhost:3000")
.withSockJS();
}
REST 请求运行良好,我什至通过一个简单的节点脚本将其连接到 websocket,但在浏览器中我没有运气。这就是我在浏览器中的连接方式(与脚本相同):
import Stomp from 'stompjs';
import SockJS from 'sockjs-client';
...
let ws = new SockJS('http://localhost:8080/ws/');
let client = Stomp.over(ws);
client.connect({'some-header': 'some-data'}, (success) => {
//client.subscribe(...
}, (error) => {
console.log(error)
})
有人可以帮助我吗?提前致谢。
【问题讨论】:
标签: spring spring-boot cors spring-websocket sockjs