当前位置: 首页 > 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) 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或服务性能之间的关系》

相关文章:

服务流程设计和服务或端口重定向及其websocket等应用示例

服务流程设计和服务或端口重定向及其websocket等应用示例 目录 服务或端口重定向的服务设计和websocket等应用示例 一、通用请求控制流程 1.1、入口 1.2、所有GET请求首先预检控制单元 1.3、http请求会分别自动307重定向 1.4、所有请求首先执行跨源控制单元 1.5、然后…...

16. LangChain实战项目2——易速鲜花内部问答系统

需求简介 易束鲜花企业内部知识库如下: 本实战项目设计一个内部问答系统,基于这些内部知识,回答内部员工的提问。 在前面课程的基础上,需要安装的依赖包如下: pip install docx2txt pip install qdrant-client pip i…...

一文了解Conda使用

一、Conda库频道 conda的软件频道是存储软件包的远程位置,当在Conda中安装软件包时,它会从指定的频道中下载和提取软件包。频道包含了各种软件包,不同的频道可能提供不同版本的软件包,用户可以根据需要选择适合的版本。 常见 Co…...

AI辅助学习vue第十四章

第十四章:技术引领与未来展望 在第十五章,你已经在Vue技术领域深耕许久,积累了丰富的经验与卓越的影响力。此时,你将站在行业前沿,引领技术走向,为Vue技术的未来发展开辟新道路。 1. 引领Vue技术发展方向…...

chromadb向量数据库使用 (1)

目录 完整代码代码解释 完整代码 import chromadb chroma_client chromadb.Client()collection chroma_client.create_collection(name"my_collection")collection.add(documents["This is a document about pineapple","This is a document about…...

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设置字符…...

关于大型语言模型的结构修剪

本文介绍了一种名为 **LLM-Pruner** 的方法,用于对大型语言模型(LLMs)进行结构化剪枝,以减少模型大小和计算需求,同时保留其多任务解决和语言生成能力。LLM-Pruner 通过依赖检测和重要性估计实现高效剪枝,并…...

PostgreSQL 生产环境升级指南:pg_upgrade 快速完成版本升级!

前言 PostgreSQL 的版本号由主要版本号和次要版本号组成。例如,在 10.1 中,10 是主要版本,1 是次要版本。关于更多版本的规划,请参考 PostgreSQL 版本路线图。 版本号规则: PostgreSQL 10 及以后:版本号…...

Ubuntu2204下使用NVIDIA GeForce RTX 4090进行DeepSeek-R1-Distill-Llama-8B模型微调

Ubuntu2204下使用NVIDIA GeForce RTX 4090进行DeepSeek-R1-Distill-Llama-8B模型微调 环境准备创建Python微调环境准备数据集准备模型文件 模型微调模型预测原始模型预测微调模型预测 使用unsloth,可以方便地对大模型进行微调。以微调DeepSeek-R1-Distill-Llama-8B为…...

JAVA面试常见题_基础部分_mybatis面试题

1、什么是 MyBatis? 答:MyBatis 是一个可以自定义 SQL、存储过程和高级映射的持久层框架。 2、讲下 MyBatis 的缓存答 :MyBatis 的缓存分为一级缓存和二级缓存,一级缓存放在 session 里面,默认就有,二级缓存放在它的命名空间里,默认是不打…...

RISC-V汇编学习(一)—— 基础认识

最近这三年的工作时间大部分的工作,都是基于riscv的cpu和接口ip开发适配驱动,时不时的就要debug测试代码,面对很多都是汇编,所以也是整理下积累的一点点笔记,系列博客将总结下riscv相关的内容,一是给有需要…...

【Delphi】如何解决使用webView2时主界面置顶,而导致网页选择文件对话框被覆盖问题

一、问题描述&#xff1a; 在Delphi 中使用WebView2控件&#xff0c;如果预先把主界面置顶&#xff08;Self.FormStyle : fsStayOnTop;&#xff09;&#xff0c;此时&#xff0c;如果在Web页面中有使用&#xff08;<input type"file" id"fileInput" acc…...

基于POI的Excel下拉框自动搜索,包括数据验证的单列删除

目录 目标 例子 1.搜索下拉框页 2.数据源页 3.效果 代码以及注意事项 1.代码 2.注意事项 1.基于Excel的话&#xff0c;相当于加入了一个【数据验证】 2.代码中的一些方法说明 目标 期望在Excel利用代码创建具备自动搜索功能的下拉框 例子 1.搜索下拉框页 2.数据源…...

基金 word-->pdf图片模糊的解决方法

1. 首先需要Adobe或福昕等pdf阅读器。 2. word中 [文件]--[打印]&#xff0c;其中打印机选择pdf阅读器&#xff0c;例如此处我选择福昕阅读器。 3. 选择 [打印机属性]--[编辑]--[图像]&#xff0c;将所有的采样、压缩均设置为 关闭。点击[另存为]&#xff0c;保存为 基金报告…...

React底层原理详解

React中Element&Fiber对象、WorkInProgress双缓存、Reconcile&Render&Commit、第一次挂载过程详解 在面试中介绍React底层原理时&#xff0c;需遵循逻辑清晰、层次分明、重点突出的原则&#xff0c;结合技术深度与实际应用场景。以下是结构化回答模板&#xff1a;…...

Word 插入图片会到文字底下解决方案

一、现象描述 正常情况下&#xff0c;我们插入图片都是这样的。 但有时突然会这样&#xff0c;插入的图片陷于文字底部。 二、网上解决方案 网上有教程说&#xff0c;修改图片布局选项&#xff0c;从嵌入型改成上下型环绕。改完之后确实有用&#xff0c;但是需要手动拖动图片…...

基于DeepSeek 的图生文最新算法 VLM-R1

目录 一、算法介绍 二 算法部署 三 模型下载 四 算法测试 五 可视化脚本 一、算法介绍 VLM-R1:稳定且可通用的 R1 风格大型视觉语言模型 自从 Deepseek-R1 推出以来,出现了许多专注于复制和改进它的作品。在这个项目中,我们提出了 VLM-R1,一种稳定且可通用的 R1 风格…...

Composer如何通过GitHub Personal Access Token安装私有包:完整教程

使用Composer安全管理您的PHP私有依赖包 一、前言 在PHP开发中&#xff0c;我们经常需要将内部工具包托管为私有仓库。传统的账号密码验证方式存在安全隐患&#xff0c;而GitHub Personal Access Token&#xff08;PAT&#xff09;提供了一种更安全的鉴权方案。本文将通过4个…...

postgresql postgis扩展相关

项目 下载地址 http://rpmfind.net/linux/rpm2html/search.php?queryprotobuf(x86-64) Postgis Index of /postgis/source/ proj4 Index of /proj/ geos Index of /geos/ libxml2 ftp://xmlsoft.org/libxml2/ Index of /sources Json-c Releases json-c/json-c G…...

基于Python Django的人脸识别上课考勤系统(附源码,部署)

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…...

【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15

缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下&#xff1a; struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业&#xff0c;其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进&#xff0c;需提前预防假检、错检、漏检&#xff0c;推动智慧生产运维系统数据的流动和现场赋能应用。同时&#xff0c;…...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!

5月28日&#xff0c;中天合创屋面分布式光伏发电项目顺利并网发电&#xff0c;该项目位于内蒙古自治区鄂尔多斯市乌审旗&#xff0c;项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站&#xff0c;总装机容量为9.96MWp。 项目投运后&#xff0c;每年可节约标煤3670…...

相机从app启动流程

一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

Spring AI与Spring Modulith核心技术解析

Spring AI核心架构解析 Spring AI&#xff08;https://spring.io/projects/spring-ai&#xff09;作为Spring生态中的AI集成框架&#xff0c;其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似&#xff0c;但特别为多语…...

短视频矩阵系统文案创作功能开发实践,定制化开发

在短视频行业迅猛发展的当下&#xff0c;企业和个人创作者为了扩大影响力、提升传播效果&#xff0c;纷纷采用短视频矩阵运营策略&#xff0c;同时管理多个平台、多个账号的内容发布。然而&#xff0c;频繁的文案创作需求让运营者疲于应对&#xff0c;如何高效产出高质量文案成…...

IP如何挑?2025年海外专线IP如何购买?

你花了时间和预算买了IP&#xff0c;结果IP质量不佳&#xff0c;项目效率低下不说&#xff0c;还可能带来莫名的网络问题&#xff0c;是不是太闹心了&#xff1f;尤其是在面对海外专线IP时&#xff0c;到底怎么才能买到适合自己的呢&#xff1f;所以&#xff0c;挑IP绝对是个技…...

jmeter聚合报告中参数详解

sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample&#xff08;样本数&#xff09; 表示测试中发送的请求数量&#xff0c;即测试执行了多少次请求。 单位&#xff0c;以个或者次数表示。 示例&#xff1a;…...

【 java 虚拟机知识 第一篇 】

目录 1.内存模型 1.1.JVM内存模型的介绍 1.2.堆和栈的区别 1.3.栈的存储细节 1.4.堆的部分 1.5.程序计数器的作用 1.6.方法区的内容 1.7.字符串池 1.8.引用类型 1.9.内存泄漏与内存溢出 1.10.会出现内存溢出的结构 1.内存模型 1.1.JVM内存模型的介绍 内存模型主要分…...