服務流程設計和服務或端口重定向及其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或服務性能之間的關系》