服務流程設計和服務或端口重定向及其websocket等應用示例

服務流程設計和服務或端口重定向及其websocket等應用示例

目錄

服務或端口重定向的服務設計和websocket等應用示例

一、通用請求控制流程?

1.1、入口

1.2、所有GET請求首先預檢控制單元

1.3、http請求會分別自動307重定向

1.4、所有請求首先執行跨源控制單元

1.5、然后執行三方平臺access_token令牌控制

1.6、請求啟動器鏈依賴控制

1.7、重新修正函數GetClientData以統一控制GET請求的UrlSearchParams?

1.8、關閉所有POST請求內容的sort排序?

1.9、Url.Decode解碼所有請求路徑?

1.10、各類不安全請求的403攔截器

1.11、以上均含文件過濾控制?

1.12、以上均含文件緩存控制?

1.13、以上均含跨源請求白名單?

1.14、執行文件Location請求控制器

1.14.1、執行文件下載控制器

1.14.2、執行html靜態文件請求控制器

二、官網html請求

2.1、入口

2.2、其中包含文件過濾控制?

三、非官網html請求?

3.1、千萬需要列入到文件過濾控制?

3.2、千萬不要列入到文件緩存控制?

四、服務端口重定向

4.1、有時需要將不同服務程序進行隔離?

4.2、代理端口重定向?

4.3、所有代理重定向均應設計為API而非明文html??

五、關于websocket

5.1、【微信小程序】WebSocket

5.2、【H5】WebSocket

喜歡的,就收藏并點個贊,鼓勵我繼續技術的原創寫作及經驗分享:


一、通用請求控制流程?

? ? ? ? 注意控制順序:?

1.1、入口

? ? ? ? ?http://www.cpuofbs.com/請求路徑 或?https://www.cpuofbs.com/請求路徑?

1.2、所有GET請求首先預檢控制單元

? ? ? ? ?通用請求函數 doOptions2Self?

1.3、http請求會分別自動307重定向

? ? ? ? ?307到?https://www.cpuofbs.com/index.html 和 https://www.cpuofbs.com 或?https://cpuofbs.com?

? ? ? ? ?ExecuteRequest服務控制器執行方法do307Redirect

1.4、所有請求首先執行跨源控制單元

? ? ? ? ?通用請求函數 DoCheckCorsOrigin?

1.5、然后執行三方平臺access_token令牌控制

? ? ? ? ?通用請求函數 doApp_API_access_token?

1.6、請求啟動器鏈依賴控制

? ? ? ? ?通用請求函數 doInitiator?

1.7、重新修正函數GetClientData以統一控制GET請求的UrlSearchParams?

1.8、關閉所有POST請求內容的sort排序?

? ? ? ? ?TStringList( Request.ContentFields ).Sorted:=false; ?

? ? ? ? ?默認的Sorted可能會對xml或json封裝的數據產生順序混亂————報文請求者原有的順序———— Request.Params內部依賴Request.ContentFields————自己根據實際需要來解析。

1.9、Url.Decode解碼所有請求路徑?

1.10、各類不安全請求的403攔截器

? ? ? ? ?通用請求函數 do403Intercept?

1.11、以上均含文件過濾控制?

? ? ? ? ?通用過濾請求列表 StaticH5FileList?

? ? ? ? ?通用過濾請求函數?isFilteredStaticH5File?

1.12、以上均含文件緩存控制?

? ? ? ? ?通用緩存請求列表 needCacheFiles?

1.13、以上均含跨源請求白名單?

? ? ? ? ?通用跨源請求白名單列表 WhiteListHost?

? ? ? ? ?通用跨源請求白名單判斷函數?isWhiteListHost?

? ? ? ? ?通用跨源白名單請求內容安全策略函數?getWhiteListHost4CSP_Requesting?

1.14、執行文件Location請求控制器

1.14.1、執行文件下載控制器

? ? ? ? ?通用請求函數 DownloadaFileWithoutSession_BugFeel?

1.14.2、執行html靜態文件請求控制器

? ? ? ? ?通用請求函數 DoNosessionRootHtmls?

二、官網html請求

2.1、入口

? ? ? ? ?http://www.cpuofbs.com/index.html?或?http://www.cpuofbs.com?

2.2、其中包含文件過濾控制?

? ? ? ? ?通用過濾請求列表 StaticH5FileList?

? ? ? ? ?通用過濾請求函數?isFilteredStaticH5File?

三、非官網html請求?

3.1、千萬需要列入到文件過濾控制?

? ? ? ? ?需要列入到通用過濾請求列表 StaticH5FileList?.根據實際需求客制化:?

? ? ? ? ?跨源控制DoCheckCorsOrigin函數會使用該過濾策略。

? ? ? ? ?若該html請求未跨源可以不列入 StaticH5FileList?。特別注意跨源websoket(比如端口8080提供的服務)嵌入到該未跨源html請求(比如端口80或443)中時。示例:

if ((window.location.href.toLowerCase() === 'http://192.168.3.242/mywss.html') ) 
{aURL = 'ws://192.168.3.242:8080/myWSS'
};
if ((window.location.href.toLowerCase() === 'http://127.0.0.1/mywss.html') ) 
{aURL = 'ws://127.0.0.1:8080/myWSS'
};
if ((window.location.href.toLowerCase() === 'https://www.cpuofbs.com/mywss.html') ) 
{aURL = 'wss://www.cpuofbs.com:8080/myWSS'
};
const socket = new WebSocket(aURL);

? ? ? ? ?若該html請求跨源必須列入 StaticH5FileList?:此時該源若不在isWhiteListHost函數白名單列表內,只能被默認源default-src訪問且內容源和腳本源必須是https才可訪問,否則404;該源若在isWhiteListHost函數白名單列表內,則接受設定的CSP策略,才可以被客戶端訪問,否則404。

3.2、千萬不要列入到文件緩存控制?

? ? ? ? ?不要列入到通用緩存請求列表 needCacheFiles?根據實際需求客制化

? ? ? ? ?因為緩存有過期時效性,一些服務類的html請求,會涉及到跨源控制DoCheckCorsOrigin且在其中控制設定的CSP內容安全策略,CSP可能會有改動。

? ? ? ? ?CSP(Content-Security-Policy內容安全策略),在函數DoCheckCorsOrigin中設定。

四、服務端口重定向

4.1、有時需要將不同服務程序進行隔離?

? ? ? ? ?比如,websocket服務器、tcp-socket服務器、專用的上傳服務器、專用的下載服務器、專用的郵件服務器等等;又比如專用平臺的服務器,諸如“微信小程序服務器”、“ERP、CRM、SCM”等業務服務器。

? ? ? ? ?因為這些服務具有過很多特性,將它們與官網混合在一起,會相互影響訪問的性能。

? ? ? ? ?此時可以運用“端口重定向技術”。

4.2、代理端口重定向?

? ? ? ? ?比如websocket的服務程序

? ? ? ? ?http://192.168.3.242/myWSS.html ===> ws://192.168.3.242:8080/myWSS?
? ? ? ? ?https://www.cpuofbs.com/myWSS.html ===> wss://www.cpuofbs.com:8080/myWSS??

  //代理端口重定向__比如websocket的服務程序: //注意不要_涉及SSL證書過期時的驗證if LowerCase(RequestPathInfo).Contains('tls')and (Request.ServerPort=8080) thenbeginif _IsHTTPS_ then gSCProxyPortInit(true,443,8080,host_domain,'/')else gSCProxyPortInit(false,443,8080,Request.host,'/');Handled:=true; Result:=1;exit;//:◆◆將請求分發給__◆監聽8080端口的【服務】//_比如◆◆websocket◆◆end else;

4.3、所有代理重定向均應設計為API而非明文html??

? ? ? ? ?防止惡意程序利用搜索引擎Robots協議掃描html文件。所有API均應執行登錄驗證流程。

五、關于websocket

5.1、【微信小程序】WebSocket

? ? ? ? ?◆◆◆◆注意事項:?
? ? ? ? ?◆若【微信小程序】WebSocket 并發數 1.7.0 及以上版本,最多可以同時存在 5 個 WebSocket 連接。
? ? ? ? ?1.7.0 以下版本,1對1:一個小程序同時只能有一個 WebSocket 連接,如果當前已存在一個 WebSocket 連接,會自動關閉該連接,并重新創建一個 WebSocket 連接? ? ? ? ? ? ? ? ? https://developers.weixin.qq.com/miniprogram/dev/api/network/websocket/wx.connectSocket.html#并發數
? ? ? ? ?◆若【微信小程序】TCP Socket實例
? ? ? ? ? ? ?●禁止與以下端口號連接:1024 以下
? ? ? ? ? ? ?●禁止與以下端口號連接:1099 1433 1521 1719 1720 1723 2049 2375 3128 3306 3389 3659 4045 5060 5061 5432 5984 6379 6000 6566 7001 7002
? ? ? ? ? ? ?8000-8100 8443 8888 9200 9300
? ? ? ? ? ? ?10051 10080 11211 27017 27018 27019
? ? ? ? ? ? ?●每 5 分鐘內最多創建 20 個 TCPSocket?

5.2、【H5】WebSocket

? ? ? ? ?◆同一個瀏覽器,允許不同的【標簽頁】連接同一個WebSocket URL。
? ? ? ? ?服務器會視為不同的客戶端連接句柄,客戶端連接的FSocket不同,UID_MASK掩碼亦會不同。

? ? ? ? ?◆同一臺設備不同瀏覽器,同一個WebSocket URL。

? ? ? ? ?服務器均會視為不同的客戶端連接。

喜歡的,就收藏并點個贊,鼓勵我繼續技術的原創寫作及經驗分享:

本博客相關文章:

《CPU或GPU的cache與芯片納米級別和APP或服務性能之間的關系》

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/72256.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/72256.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/72256.shtml

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

相關文章

PHP面試題--后端部分

本文章持續更新內容 之前沒來得及整理時間問題導致每次都得找和重新背 這次整理下也方便各位小伙伴一起更輕松的一起踏入編程之路 歡迎各位關注博主不定期更新各種高質量內容適合小白及其初級水平同學一起學習 一起成為大佬 數組函數有那些 ps:本題挑難的背因為…

深入了解 MySQL 中的 JSON_CONTAINS

深入了解 MySQL 中的 JSON_CONTAINS MySQL 5.7 及更高版本引入了對 JSON 數據類型的支持,使得在數據庫中存儲和查詢 JSON 數據成為可能。在這些新功能中,JSON_CONTAINS 函數是一個非常有用的工具,允許我們檢查一個 JSON 文檔是否包含特定的值…

git命令學習記錄

1. git reset 參數說明 git reset 是用來回退版本的,它可以添加三個參數,常用的使用格式是這樣的:git reset [--hard | --soft | --mixed] 版本號 一般使用git修改文件并提交需要三步,第一步在文本編輯器中編輯文件,也…

使用DeepSeek+KIMI生成高質量PPT

一、使用DeepSeek DeepSeek官網:DeepSeek 點擊“開始對話”,進入交互頁面。 在上圖中,輸入問題,即可獲取AI生成的結果。 基礎模型(V3):通用模型(2024.12),高…

深度學習工程師的技術圖譜和學習路徑

在構建一個深度學習工程師的技術圖譜時,按照“技能樹與能力模型”的結構可以幫助清晰地展示出技術體系的層次化關系,幫助學習者更好地理解每個技術點的依賴與順序。 深度學習工程師的技術圖譜和學習路徑 以下是深度學習工程師的技能樹,包括從基礎到進階的學習路徑,以及對…

RabbitMQ系列(五)基本概念之Queue

在 RabbitMQ 中,Queue(隊列) 是存儲消息的容器,也是消息傳遞的核心載體。以下是其核心特性與作用的全方位解析: 一、Queue 的定義與核心作用 消息存儲容器 Queue 是 RabbitMQ 中實際存儲消息的實體,生產者…

MySQL—使用binlog日志恢復數據

一、binlog日志恢復數據簡介 在 MySQL 中,使用二進制日志(binlog)恢復數據是一種常見的用于故障恢復或數據找回的方法。以下是詳細的使用步驟: 確認 binlog 已啟用:首先需要確認 MySQL 服務器已經啟用了二進制日志功…

VADv2: 基于矢量表征和概率規劃的E2E架構

1. 寫在前面 今天分享一篇自動駕駛領域的論文VADv2(End-to-End Vectorized Autonomous Driving via Probabilistic Planning), 基于矢量表征和概率規劃的E2E架構,2024年2月份華中科技大和地平線合作的一篇文章, 在經典的端到端模型架構上作出了基于概率規劃去輸出規劃軌跡的…

NLP11-命名實體識別(NER)概述

目錄 一、序列標注任務 常見子任務 二、 命名實體識別(NER) (一)簡介 (二)目標 (三)應用場景 (四)基本方法 (五)工具與資源 一…

虛擬仿真無線路由器5G和2.4G發射信號輻射對比(虛擬仿真得出最小安全距離,與國際標準要求一致)

1、前言 有人說,只要有電磁波的地方就有輻射。5G和2.4G信號輻射強度是多少?是否會對人體構成危害?無線路由器的2.4GHz頻段,頻率范圍:2.4 GHz 至 2.4835 GHz,信道寬度:通常為20 MHz,…

深入剖析 OpenCV:全面掌握基礎操作、圖像處理算法與特征匹配

深入剖析 OpenCV:全面掌握基礎操作、圖像處理算法與特征匹配 一、引言二、OpenCV 的安裝(一)使用 pip 安裝(二)使用 Anaconda 安裝 三、OpenCV 基礎操作(一)圖像的讀取、顯示與保存(…

DOM HTML:深入理解與高效運用

DOM HTML:深入理解與高效運用 引言 隨著互聯網的飛速發展,前端技術逐漸成為軟件開發中的關鍵部分。DOM(文檔對象模型)和HTML(超文本標記語言)是前端開發中的基石。本文將深入探討DOM和HTML的概念、特性以及在實際開發中的應用,幫助讀者更好地理解和使用這兩項技術。 …

【數據挖掘】Matplotlib

Matplotlib 是 Python 最常用的 數據可視化 庫之一,在數據挖掘過程中,主要用于 數據探索 (EDA)、趨勢分析、模式識別 和 結果展示。 📌 1. Matplotlib 基礎 1.1 安裝 & 導入 # 如果未安裝 Matplotlib,請先安裝 # pip instal…

DHCP配置實驗

實驗拓撲圖 首先配置server的IP地址和網關 接下來配置R1 undo info-center enable dhcp enable //開啟DHCP服務 ip pool dhcp-pool1 //開始配置dhcp地址池 gateway-list 192.168.1.254 //配置網關 network 192.168.1.0 mask 255.255.255.0 //配置網段和子網掩碼 dns-list …

Linux:ELF文件-靜動態庫原理

??所屬專欄:Linux?? ??作者主頁:嶔某?? ELF文件 什么是編譯?編譯就是將程序源代碼編譯成能讓CPU直接執行的機器代碼 如果我們要編譯一個 .c文件,使用gcc -c將.c文件編譯為二進制文件.o ,如果一個項目有多個.…

C++性能優化常用技巧

一. 選擇合適的數據結構 1.1 map與unordered_map的選擇 如果僅僅只需要使用到快速查找的特性,那么unordered_map更加合適,他的復雜度是O(1)。如果還需要排序以及范圍查找的能力,那么就選擇map。 1.2 vector與list的選擇 通常情況下&#…

Towards Graph Foundation Models: A Survey and Beyond

Towards Graph Foundation Models: A Survey and Beyond WWW24 ?#paper/???#? #paper/💡#? 背景和動機 背景與意義 隨著基礎模型(如大語言模型)在NLP等領域的突破,圖機器學習正經歷從淺層方法向深度學習的范式轉變。GFM…

基于 Python 深度學習的電影評論情感分析可視化系統(2.0 全新升級)

基于 Python 深度學習的電影評論情感分析可視化系統,基于 Flask 深度學習,構建了一個 影評情感分析系統,能夠 自動分析影評、計算情感趨勢 并 可視化展示,對于電影行業具有重要參考價值! 基于 Python 深度學習的電影評…

Cargo, the Rust package manager, is not installed or is not on PATH.

今天在Windows操作系統上通過pip 安裝jupyter的時候遇到這個報錯,Cargo, the Rust package manager, is not installed or is not on PATH.。 解決辦法 官網:https://rustup.rs/# 下載:https://win.rustup.rs/x86_64 安裝完成之后&#xff0c…

CSS—text文本、font字體、列表list、表格table、表單input、下拉菜單select

目錄 1.文本 2.字體 3.列表list a.無序列表 b.有序列表 c.定義列表 4.表格table a.內容 b.合并單元格 3.表單input a.input標簽 b.單選框 c.上傳文件 4.下拉菜單 1.文本 屬性描述color設置文本顏色。direction指定文本的方向 / 書寫方向。letter-spacing設置字符…