SpringBoot跨域问题配置websocket

什么是跨域?

浏览器从一个域名的网页去请求另一个域名的资源时,域名、端口、协议任一不同,都是跨域
域名:
 主域名不同 http://www.baidu.com/index.html –>http://www.sina.com/test.js
 子域名不同 http://www.666.baidu.com/index.html –>http://www.555.baidu.com/test.js
 域名和域名ip http://www.baidu.com/index.html –>http://180.149.132.47/test.js
端口:
 http://www.baidu.com:8080/index.html–> http://www.baidu.com:8081/test.js
协议:
 http://www.baidu.com:8080/index.html–> https://www.baidu.com:8080/test.js
备注:
 1、端口和协议的不同,只能通过后台来解决
 2、localhost和127.0.0.1虽然都指向本机,但也属于跨域

参考自:

https://blog.csdn.net/tjcjava/article/details/76468225?utm_source=copy

现在我要在一个网页使用<iframe> 标签,内联另一个网页,

网页代码:

<!DOCTYPE html>
<html>
<head> 
<meta charset="utf-8"> 
<title>跨域</title> 
</head> 
<body>

<iframe src="这里是有WebSocket连接的网页"></iframe>

</body>
</html>

而第二个网页是与SpringBoot提供的Web服务建立了WebSocket连接,这里就要将Springboot中WebSocket的配置成跨域的。也就是使用如下配置。

关于Springboot建立WebSocket连接,参考:https://blog.csdn.net/qq_28988969/article/details/78104850

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot 中使用 WebSocket 进行消息推送非常简单。以下是一个简单的示例: 1. 首先,在 pom.xml 文件中添加以下依赖: ``` <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency> </dependencies> ``` 2. 创建一个 WebSocket 配置类,用于配置 WebSocket 相关的操作。在该类上添加 `@Configuration` 和 `@EnableWebSocket` 注解,示例代码如下: ``` @Configuration @EnableWebSocket public class WebSocketConfig implements WebSocketConfigurer { @Override public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) { registry.addHandler(myHandler(), "/myHandler") // 指定处理器和URL地址 .setAllowedOrigins("*"); // 允许跨域访问 } @Bean public WebSocketHandler myHandler() { return new MyWebSocketHandler(); } } ``` 3. 创建一个自定义的 WebSocket 处理器,用于处理 WebSocket 相关的操作逻辑。示例代码如下: ``` public class MyWebSocketHandler extends TextWebSocketHandler { private List<WebSocketSession> sessions = new CopyOnWriteArrayList<>(); // 保存所有连接的 Session @Override public void afterConnectionEstablished(WebSocketSession session) throws Exception { sessions.add(session); // 添加新的连接 Session } @Override protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception { String payload = message.getPayload(); // 处理接收到的消息 // ... // 将处理结果发送给所有连接的客户端 sendMessageToAll(payload); } private void sendMessageToAll(String message) throws IOException { for (WebSocketSession session : sessions) { session.sendMessage(new TextMessage(message)); } } } ``` 4. 在 Controller 类中编写发送消息的接口,示例代码如下: ``` @RestController public class MessageController { @Autowired private WebSocketHandler myHandler; @GetMapping("/sendMessage") public String sendMessage(@RequestParam("message") String message) throws IOException { myHandler.sendMessageToAll(message); // 调用自定义的 WebSocket 处理器发送消息 return "消息已发送!"; } } ``` 5. 启动应用程序,并访问 `/sendMessage` 接口发送消息,可以收到消息的 WebSocket 客户端收到推送的消息。 以上就是使用 Spring Boot 进行 WebSocket 消息推送的简单示例。有关更详细的配置和使用,请参考 Spring Boot 官方文档和相应的 WebSocket 规范。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值