当前位置: 首页 > news >正文

WebSocket和跨域问题

WebSocket

特点

WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。简单来说,它就像是在客户端和服务器之间建立了一条"专用通道",双方可以随时主动发送消息给对方,而不需要像HTTP那样总是由客户端发起请求。

  • 同一时间双向同时传输的通信方式。

例如:

  • HTTP 就像是传统的邮件往来——你给朋友写信,必须等朋友回信后才能知道他的想法。
  • WebSocket 就像是电话通话——双方可以随时说话,随时听到对方的回应,交流更加自然流畅。

与 http 的区别

HTTP 协议的交互过程,是非常典型的“一问一答”
image.png|488

  • 单向性,只能由客户端主动发起请求
  • 无状态性,每次请求都是独立的
  • 短连接,一次请求完成后连接就会断开

这种设计在传统的网页浏览场景下工作得很好,但当我们需要服务器主动推送数据时就会遇到问题。比如-

  • 如果要实现一个实时消息对话功能,使用 HTTP 的话,前端只能不断地轮询服务器:"有新数据吗?有新数据吗?"这种方式不仅浪费资源,还存在明显的延迟。

WebSocket 从根本上解决了这个问题。它通过 HTTP 握手建立连接后,就会升级为 WebSocket 协议,形成一个持久的全双工通信通道。服务器可以随时主动推送数据,客户端也可以随时发送数据,双方的地位是平等的

使用场景

虽然 WebSocket 有很多优势,但并不意味着它应该完全取代 HTTP。选择使用哪种协议主要取决于具体的应用场景

  • 如果需要频繁的双向数据交换,比如在线聊天、多人游戏、协作编辑、实时监控等,WebSocket 是最佳选择。它能够提供近乎即时的响应速度,用户体验会显著提升
  • 如果只是普通的网页浏览、API 调用、文件上传下载等场景,HTTP 仍然是更好的选择。HTTP 协议更简单、更稳定,也更容易调试和缓存。而且,现代浏览器对 HTTP 的优化已经相当成熟

跨域问题

同源策略

浏览器出于安全考虑,实施的一种策略

  • 只允许来自同一源(即协议+域名+端口都相同)的请求访问,否则就会导致跨域问题

例如:

  • http://xxxx.com ——> https://xxxx.com:存在跨域,协议不同
  • 127.x.x.x:8001 ——> 127.x.x.x:8002:存在跨域,端口不同
  • www.xxxx.com ——> www.yyyy.com:存在跨域,域名不同

解决办法

找一个中间人——配置一个代理服务器

前端直接请求后端接口的话,肯定越不过同源策略,会造成跨域问题。因为前端服务端口和后端服务端口肯定是不一样的。

我们可以配置一个代理服务器,前端有请求之后,先请求和其同源的代理服务器,然后再去请求后端服务

  • 因为服务器不受同源策略的影响
http://www.dtcms.com/a/342118.html

相关文章:

  • Android为ijkplayer设置音频发音类型usage
  • 如何用 SolveigMM Video Splitter 从视频中提取 AAC 音频
  • CMake3: CMake的嵌套使用与自定义库
  • Spring Event 企业级应用
  • 笔试——Day45
  • Prompt魔法:提示词工程与ChatGPT行业应用读书笔记:提示词设计全能指南
  • 第四章:大模型(LLM)】07.Prompt工程-(7)角色提示
  • Flink基础
  • 解锁工业级Prompt设计,打造高准确率AI应用
  • Web自动化测试:测试用例流程设计
  • Java设计模式-解释器模式
  • 策略模式 vs 适配器模式
  • 基于STM32设计的大棚育苗管理系统(4G+华为云IOT)_265
  • 移动应用抓包与调试实战 Charles工具在iOS和Android中的应用
  • 数据结构初阶:详解二叉树(三):链式二叉树
  • system\core\init\init.cpp----LoadBootScripts()解析init.rc(1)
  • STM32之串口详解
  • 学习Linux嵌入式(正点原子imx课程)开发到底是在学什么
  • Spring Cloud Netflix学习笔记06-Zuul
  • Kafka消息持久化机制全解析:存储原理与实战场景
  • Kafka集成Flume
  • 人工智能 -- 循环神经网络day1 -- 自然语言基础、NLP基础概率、NLP基本流程、NLP特征工程、NLP特征输入
  • 算法 之 拓 扑 排 序
  • LeetCode 回文链表
  • 桥梁设计模式
  • RabbitMQ事务消息原理是什么
  • RabbitMQ:延时消息(死信交换机、延迟消息插件)
  • 领域专用AI模型训练指南:医疗、法律、金融三大垂直领域微调效果对比
  • 28、工业网络资产漏洞扫描与风险评估 (模拟) - /安全与维护组件/industrial-network-scanner
  • 深度解析Atlassian 团队协作套件(Jira、Confluence、Loom、Rovo)如何赋能全球分布式团队协作