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

服务流程设计和服务或端口重定向及其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) then
  begin
    if _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或服务性能之间的关系》

相关文章:

  • llama-factory ||启智平台
  • 快递站点管理|基于springboot校园快递站点管理设计与实现(源码+数据库+文档)
  • 头歌实验---C/C++程序设计:实验四:循环结构程序设计
  • 2024贵州大学计算机考研复试上机真题
  • 慢SQL如何定位处理?
  • RuoYi-Cloud-Plus 配置
  • Linux服务器安装cuda和cudnn实战教程
  • (done) MIT6.S081 Interrupts Lecture 学习笔记
  • GPIO及其应用
  • 面试常见问题
  • C++格式讲解
  • 《Operating System Concepts》阅读笔记:p177-p178
  • 专业便捷PDF软件,即开即用
  • 提升系统效能:从流量控制到并发处理的全面解析
  • Linux:进程替换
  • 【漫话机器学习系列】111.指数之和的对数(Log-Sum-Exp)
  • linux--多进程开发(7) 信号、相关函数、信号集及其操作和捕获、SIGCHLD解决僵尸进程
  • Notepad++下载地址【亲测好用】
  • 2025年生成式人工智能应用工程师学习线路
  • 数据库基础(MySQL)
  • 曾犯强奸罪教师出狱后办教培机构?柳州鱼峰区教育局:正核实
  • 党建评:对违规宴饮等问题要坚决露头就打
  • 男子恶意遗弃幼子获刑,最高法发布涉未成年人家庭保护典型案例
  • 重庆发布经济犯罪案件接报警电子地图,企业可查询导航属地经侦服务点
  • 京东CEO许冉:外卖日单量接近2000万单,看到外卖对平台拉动和转化效应
  • 国务院关税税则委员会关于调整对原产于美国的进口商品加征关税措施的公告