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.pswp.cn/pingmian/94194.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/94194.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/94194.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

微服務-19.什么是網關

一.網關曾經我們的項目是單體項目,前端只需要請求8080端口,就可以獲取所有需要的數據和服務并進行渲染。但是拆分成微服務后,會面臨幾大問題:1.但是現在我們將該單體項目拆分成了微服務項目,每個項目都有自己獨立的端口…

從字節碼層面剖析以太坊智能合約創建原理

1. 引言 閱讀完本文之后,將能理解一下字節碼含義: 608060405260405160893803806089833981016040819052601e916025565b600055603d565b600060208284031215603657600080fd5b5051919050565b603f80604a6000396000f3fe6080604052600080fdfea2646970667358221…

typora無需激活版及最新激活版方法!雙擊安裝就能用

介紹 Typora 是一款Markdown編輯器,支持實時預覽,所見即所得。跨平臺,支持Windows、macOS、Linux。適合寫作、筆記、技術文檔等。本教程將提供合法安全的安裝方案,并解決常見問題,助你高效完成部署! 直接…

基于Java、GeoTools與PostGIS的對跖點求解研究

目錄 前言 一、對跖點簡介 1、地理學定義 2、人生哲學含義 二、對跖點求解 1、Java求解 2、Geotools求解 3、PostGIS求解 4、三種計算方法的對比 5、Leaflet展示對跖點 三、總結 前言 在地理信息系統(GIS)領域,對跖點(A…

Linux-函數的使用-編寫監控腳本

Linux-函數的使用-編寫監控腳本前言一、監控cpu二、采集內存的使用信息三、采集磁盤和分區的使用信息四、顯示進程的信息前言 編寫監控腳本實現以下功能 監控cpu,內存,磁盤,進程等信息,每隔5分鐘記錄這些信息到日志文件里perform…

Authelia:開源雙因素認證與單點登錄解決方案

項目標題與描述 Authelia是一個開源的認證和授權服務器,專注于為應用程序提供雙因素認證(2FA)和單點登錄(SSO)功能。通過Web門戶,Authelia能夠作為身份和訪問管理(IAM)系統&#xff…

Apache Ozone 介紹與部署使用(最新版2.0.0)

目錄 一、軟件介紹 二、軟件架構 Ozone Manager(OM) Storage Container Manager(SCM) Containers Datanodes Storage Containers Recon Recon 和 Ozone Manager Recon 和 Storage Container Manager 三、安裝部署 準備…

Review --- Linux

Review — Linux Linux 是一種開源的類 Unix 操作系統內核,廣泛應用于服務器、嵌入式設備和個人計算機中。其核心特點是開源、穩定、安全和高度的可定制性。對于大學畢業生而言,掌握 Linux 的基本操作和原理是進入 IT 行業的重要技能之一。 Linux 的基本…

【msyql 】占用硬盤太大 ,那些文件可以清理

從目錄內容來看,這臺 MySQL 服務器上主要是 xxl-job 調度平臺的數據庫。占用空間最大的是:24G xxl_job_log.ibd這個文件是 xxl-job 的任務執行日志表,隨著時間推移,日志量會非常大。可以清理的文件和方法1. 清理 xxl_job_log 表數…

58 C++ 現代C++編程藝術7-模板友元

C 現代C編程藝術7-模板友元 文章目錄C 現代C編程藝術7-模板友元一、基礎應用場景 🧩1. 模板類聲明友元函數2. 普通類聲明模板函數為友元二、模板類互訪場景 ??1. 同類模板互訪(一對一)2. 異類模板互訪(多對多)三、高…

Undertow —— JBOSS 的社區版,redhat 下場維護的開源項目,頂頂好用的 Java web server

Undertow JBoss Community Undertow Undertow is a flexible performant web server written in java, providing both blocking and non-blocking API’s based on NIO. Undertow 是一個用 Java 編寫的靈活高性能 Web 服務器,提供基于 NIO 的阻塞和非阻塞 API。…

【AI智能體】Dify 搭建業務單據差異核對助手實戰詳解

目錄 一、前言 二、Dify介紹 2.1 Dify 是什么 2.2 Dify 核心特性 2.2.1 Dify特點 2.2.2 Dify 多模型支持 2.2.3 Dify 適應場景 2.2.4 基于Dify 搭建發票識別應用優勢 三、Dify 搭建業務單據核對助手實戰過程 3.1 前置準備 3.1.1 安裝必要的插件 3.2 完整操作步驟 3…

Centos編譯安裝Python3.10

gcc編譯源碼包 下載python源碼包并解壓 wget https://www.python.org/ftp/python/3.10.18/Python-3.10.18.tgz tar -xf Python-3.10.18.tgz cd Python-3.10.18系統編譯依賴環境安裝 sudo yum install zlib-devel ncurses-devel gdbm-devel nss-devel openssl-devel readline-de…

Maya 3D建模 導入參考圖、鎖定參考圖

1 導入參考圖切換到 前視圖 或者 側視圖 導入 (根據參考圖片類別去選擇)方法1:視圖--圖像平面--導入圖像方法2:直接點 圖像平面 備注:誤操作導致看不到 解決辦法:顯示--視口 找對應的2 鎖定參考圖目的&…

基于單片機智能加濕器/空氣加濕器

傳送門 👉👉👉👉其他作品題目速選一覽表 👉👉👉👉其他作品題目功能速覽 概述 基于單片機的智能加濕器通過集成溫濕度傳感器、控制模塊和霧化裝置,實現環境濕度的自…

SNDR:高精度ADC系統的綜合性能標尺

SNDR:高精度ADC系統的綜合性能標尺 一、SNDR的本質定義與理論基礎 信噪失真比(Signal-to-Noise-and-Distortion Ratio) 是評估ADC系統綜合性能的核心指標,定義為信號功率與噪聲及失真功率之和的比值: SNDRdB10log?10(PsignalPnoisePdistorti…

2025年滲透測試面試題總結-31(題目+回答)

安全領域各種資源,學習文檔,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各種好玩的項目及好用的工具,歡迎關注。 目錄 一、代碼審計核心思路(261) 二、MySQL Getshell前提(262) …

[創業之路-560]:機械、電氣、自控、電子、軟件、信息、通信、大數據、人工智能,上述技術演進過程

上述關鍵詞反映的技術演進過程可梳理為一條從機械執行到智能決策的遞進式發展主線,各技術領域在不同階段相互滲透、共同推動機器人技術從功能替代向認知革命躍遷。以下是具體演進邏輯與趨勢分析:一、技術演進的三階段遞進機械主導階段(工業革…

芋道前端項目部署后刷新 404 的解決辦法(Nginx 配置教程)

很多同學在把 芋道前端項目 部署到服務器后,會遇到一個奇怪的問題: 👉 項目首頁能正常訪問,但一旦在瀏覽器里手動刷新某個頁面,就會報 404 Not Found 錯誤。 這到底是為什么呢?又該怎么解決呢?下…

更適合后端寶寶的前端三件套之HTML

文章目錄📕1. HTML基礎??1.1 什么是HTML??1.2 認識HTML標簽??1.3 HTML文件基本結構??1.4 標簽層次結構📕2. HTML常見標簽??2.1 標題標簽??2.2 段落標簽??2.3 換行標簽??2.4 圖片標簽??2.5 超鏈接標簽??2.6 表格標簽📕3. …