【发布时间】:2020-09-03 10:33:02
【问题描述】:
我在尝试在 Angular 9 应用程序中打开 SockJS 套接字并使用 SimpMessageTemplate 从 Spring 后端写入此套接字时遇到问题。此任务的主要目标是实时接收和显示传入数据,无需轮询。
我的原始实现基于mouadelfakir 完成的现有repository,但该实现使用的是旧版本的软件(Angular ~1 和 Spring Boot ~1.5)。更新到较新版本时,Angular 9 更新没有改变应用程序的工作方式,但升级到 Spring Boot 2.2.6 会破坏实现。
当 Angular 应用程序尝试连接后端 Spring 应用程序时,控制台输出以下两个错误:
- Access to XMLHttpRequest at 'http://localhost:8080/websocket-backend/socket/info?t=1589733936852' from origin 'http://localhost:4200' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
- GET http://localhost:8080/websocket-backend/socket/info?t=1589733936852 net::ERR_FAILED
在写这篇文章的时候,我已经尝试了很多我在网上看到的推荐的其他补救措施,例如创建一个运行 Angular 应用程序的代理或实现一个过滤器来添加跨域请求- 春季的政策,但没有任何效果。这些帖子中的大多数都较旧,我认为由于更新了软件,它们可能不再有效。
这是我使用的示例存储库的current fork,其中包含我正在尝试使用的软件升级。
编辑:感谢您对此的反馈,我能够解决问题。这是由于升级到较新版本的 Spring 引起的,但实际上是由于我在 application.properties 中使用的原始开发密钥弃用了。如果有人需要,我的current fork 上有更新的代码。
【问题讨论】:
-
尝试启用对 localhost 域的访问。 stackoverflow.com/questions/54327963/…
标签: java angular spring spring-boot sockjs