新发地网站建设客户管理软件有哪些

bicheng/2026/1/16 7:41:38/文章来源:
新发地网站建设,客户管理软件有哪些,建设银行官方网站个人系统板块修改,网站建设中如何兼容所有浏览器本文主要分享了#xff0c;SpringCloud Gateway网关在url参数带有空格或者特殊字符的情况下#xff0c;转发失败导致响应错误码400的解决方案。 响应400错误码的2种场景#xff1a; 1.参数带空格#xff0c;Gateway会误认为该空格是切割符#xff0c;如?phone 135****6…本文主要分享了SpringCloud Gateway网关在url参数带有空格或者特殊字符的情况下转发失败导致响应错误码400的解决方案。 响应400错误码的2种场景 1.参数带空格Gateway会误认为该空格是切割符如?phone 135****6862type44不能正常解析协议直接异常 2.参数带特殊字符如?phone|135****6862type44能正常解析协议但转发后异常 一、问题分析 1.可用性99的问题接口 质量组反馈的可用性文档中显示错误码4xx特别多如下图  2.排查 根据错误码匹配应用日志未发现异常日志 根据错误码匹配Gateway网关日志未发现异常日志 根据错误码匹配nginx日志发现异常日志基本都是响应400错误码 {clientip: 100.xxx.xxx.250,timestamp: 2024-01-03T00:52:1008:00,request_method: POST,response: 400,byte: 131,uri: /api/xxx/xxx/smsCode,param: phone 135****6862type44,referrer: -,agent: Mozilla/5.0 (Linux; U; Android 4.4.1; zh-cn; R815T Build/JOP40D) AppleWebKit/533.1 (KHTML, like Gecko)Version/4.0 MQQBrowser/4.5 Mobile Safari/533.1,httpx_for: 221.xx.xx.60,http_host: domain.com,upstream_addr: 172.xxx.xxx.123:8280,request_time: 0.011,upstream_response_time: 0.010,ssl_protocol: - } 3.分析 是由于请求参数带了空格phone 135****6862type44导致该空格非前端正常传参误操作是恶意请求初步怀疑是nginx转发问题因为网关未找到任何日志。经运维同事协助排查发现是Gateway网关响应的400错误码没有日志是因为日志级别没有设置到debug所以未打印。 4.排查与复现 问题复现测试用例 断点排查发现经过代码HttpObjectDecoder.splitInitialLine后将sb内容切割为一个3个元素的数组切割规则中空格就是其中一个切割符。 注意这里不能使用hutool http工具请求因为会对url进行urlencode无法复现效果 sb样本为 GET http://localhost:8280/api/xxx/xxx/smsCode?phone 135****6862 HTTP/1.1 数组样本为 [GET,http://localhost:8280/api/xxx/xxx/smsCode?phone,135****6862 HTTP/1.1] 后续代码中取第三个元素‘135****6862 HTTP/1.1’作为http协议转换导致异常所以响应400 二、解决方案 1.思路 想办法改写HttpObjectDecoder.splitInitialLine的逻辑上述情况数组样本为 [GET,http://localhost:8280/api/xxx/xxx/smsCode?phone135****6862,HTTP/1.1] 2.实现 经网络资料查询可以通过以下代码在Netty ChannelPipeline中添加ChannelHandler 经源码分析ChannelPipeline会有默认的http处理器NettyPipeline.HttpCodec其实现类为HttpServerCodec而HttpObjectDecoder.splitInitialLine的逻辑就是通过HttpServerCodec实现类来调用的 所以想办法替换NettyPipeline.HttpCodec的实现类即可 复制框架源码HttpObjectDecoder、HttpRequestDecoder、HttpServerCodec至项目目录中重命名加前缀Custom如下图  将这3个类Custom*中用到HttpObjectDecoder、HttpRequestDecoder、HttpServerCodec的地方全部修改为加Custom前缀的类如  修改CustomHttpObjectDecoder.splitInitialLine的逻辑 核心思想将sb按切割符切割出所有元素数组组装逻辑改为取第一个、取最后一个、中间部分拼接在一起  sb样本为 GET http://localhost:8280/api/xxx/xxx/smsCode?phone 135****6862 HTTP/1.1 list样本为 [GET,http://localhost:8280/api/xxx/xxx/smsCode?phone,135****6862,HTTP/1.1] 数组样本为 [GET,http://localhost:8280/api/xxx/xxx/smsCode?phone135****6862,HTTP/1.1] 保险起见非必要逻辑 1在异常情况下执行旧逻辑 2增加开关控制可通过apollo动态修改 3.url带特殊字符处理 某些情况下参数带特殊字符如下Gateway也会响应400 http://localhost:8280/api/xxx/xxx/smsCode?phone|135****6862 http://localhost:8280/api/xxx/xxx/smsCode?phone?135****6862 解决方案是增加UrlParamHandler获取url对其参数做urlencode 注意hutool工具的URLUtil.encodeQuery会对一些RSA加密的转换为空格需要用URLUtil.encodeAll或者java原生java.net.URLEncoder这2个又会把所有的路径参数、、之类的也转换所以下面写了个复杂的逻辑去获取参数值仅参数值做urlencode 怎么样如果你觉得有用的话还不快快收藏起来 附涉及的代码目录 github GitHub - 897665787/springcloud-template: 一个基于springcloud netflix微服务框架记录了关于微服务开发的一些最佳应用欢迎大家学习指导。 giteespringcloud-template: 一个基于springcloud netflix开发的脚手架记录了关于微服务开发中一些基础功能、通用功能的最佳设计欢迎大家学习、指导。 springcloud-template └── template-gateway└── netty -- 日志配置└── CustomHttpObjectDecoder -- 复制于源码└── CustomHttpRequestDecoder -- 复制于源码└── CustomHttpServerCodec -- 复制于源码└── NettyWebServerCustomizer -- 配置初始化└── UrlParamHandler -- 使用urlencode替换特殊字符

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/90026.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端网站效果有哪些2017网站建设方案

Redis实战热身Bitfields篇 完整命令参考官网 官网地址 声明: 由于操作系统, 版本更新等原因, 文章所列内容不一定100%复现, 还要以官方信息为准 https://redis.io/Redis概述 Redis是一个开源的(采用BSD许可证),用作数据库、缓存、消息代理…

一级a做爰片免费网站破解版前端开发工作岗位

请到本专栏顶置查阅最新的华为OD机试宝典 点击跳转到本专栏-算法之翼:华为OD机试 🚀你的旅程将在这里启航!本专栏所有题目均包含优质解题思路,高质量解题代码,详细代码讲解,助你深入学习,深度掌握! 文章目录 【2023年华为OD机试真题(C卷)】敏感字段加密(字符串…

科技类网站模板Wordpress火车头采集标题前乱码

摘 要 相比于以前的传统手工管理方式,智能化的管理方式可以大幅降低理财公司的运营人员成本,实现了“财来财往”的标准化、制度化、程序化的管理,有效地防止了“财来财往”的随意管理,提高了信息的处理速度和精确度,能…

个人flash网站大学生兼职网站的融资方案

三种方案,你看看哪个比较适合你1,适用于学生: 写两个方法,一个新增一个更新,在新增完了以后马上去查询一下,按主键倒叙排列,取到最新插入的id,前提主键是自增的且不是uuid,然后把查到的主键返回出去作为形参让更新方法接收到,然后更新即可.2,适用于ssh框架: 写两个事务,事务的传…

河南省建设部官方网站价格划算的做pc端网站

按键组合作用Ctrl Shift I开发人员工具Ctrl E定位到 空地址栏Ctrl L定位到 地址栏Ctrl Shift B显示或隐藏 收藏夹栏Ctrl Shift O打开收藏夹(搜索)Ctrl T打开一个新标签页Ctrl W关闭当前标签页Ctrl Shift T重新打开刚才关闭的标签页Ctrl Tab切换到下一个标签页Ctrl…

博网站建设温州集团网站建设公司

1vue3为啥比vue2好 2 vue3为什么使用proxy

做体育最好的网站我做的网站不能往下拉

本博文翻译自:http://gunnarpeipman.com/2017/08/ef-core-global-query-filters/ Entity Framework Core 2.0 全局查询过滤器 Entity Framework Core 2.0引入了全局查询过滤器,可以在创建模型时应用到实体 。它使得构建多租户应用程序和支持对实体 的软…

网站网页主页的区别图书馆网站开发策划书

前言最近写了多篇关于Source Generators的文章&#xff0c;发现它确实可以简化我们的部分开发工作。这不&#xff0c;我又盯上了Blazor。问题默认的NavMenu.razor组件用于显示导航菜单&#xff0c;它的部分代码如下&#xff1a;<div class"NavMenuCssClass" oncli…

ssh框架做音乐网站为什么不能娶电商女

面试官&#xff1a;说说微信小程序的支付流程&#xff1f; 一、前言 微信小程序为电商类小程序&#xff0c;提供了非常完善、优秀、安全的支付功能 在小程序内可调用微信的API完成支付功能&#xff0c;方便、快捷 场景如下图所示&#xff1a; 用户通过分享或扫描二维码进入商…

大连开发区网站开发公司电话网页制作教程考拉

1、Linux RPATH & $ORIGIN 许多现代C / C 项目都利用Autotools创建GNU构建系统&#xff0c;例如 根据平台生成make文件。 可执行文件&#xff08;二进制文件&#xff09;在生成/编译过程中生成&#xff0c;并且可以在执行编译的计算机上本地执行。 但是&#xff0c;如果将…

无锡网站建设推广公司无锡网站建设价格费用

模板内的表达式是非常便利的&#xff0c;但是它们实际上只用于简单的运算。在模板中放入太多的逻辑会让模板过重且难以维护。这时候需要使用到vue的计算属性computed。 文件目录结构如下&#xff1a;利用vue脚手架创建 这里实现将一个字符串进行翻转的功能&#xff1a; 其中H…

做一晚水泥工歌曲网站怎么确认网站是什么语言做的

Git教程 版本库间的交换 1️⃣ 克隆版本库2️⃣ 如何告知 Git 其他版本库的位置3️⃣ 给版本库添加别名4️⃣ 获取数据5️⃣ 远程跟踪分支&#xff1a;监控其他分支6️⃣ 利用本地分支操作别处的版本库7️⃣ PULL操作8️⃣ PUSH操作9️⃣ 命名分支&#x1f33e; 总结 Git 是个…

网站权重划分怎样建公司网站

一、自定义部件库 原则上尽量做到前后端分离&#xff0c;接口方便&#xff0c;复制简单。 1、单选框部件 # encoding: utf-8 ################################################### # 自定义的单选框 #################################################### 对外…

邯郸网络信息工程教育太原seo哪家好

在新一年的起始之际&#xff0c;我们很荣幸地与 Elektor 合作推出由乐鑫领衔编辑的杂志特刊。欢迎点此阅读电子版本。 Elektor 杂志作为国际电子工程和科技创新的重要平台&#xff0c;自 20 世纪 60 年代起&#xff0c;就引领着电子制造的发展潮流。如今&#xff0c;它已经发展…

mmd怎么做下载网站做网站开发数据库怎么写

一、实验目的 本次实验使用wireshark流量分析工具进行网络嗅探&#xff0c;旨在了解ping命令的原理及过程。 二、网络环境设置 本系列实验均使用虚拟机完成&#xff0c;主机操作系统为Windows 11&#xff0c;虚拟化平台选择Oracle VM VirtualBox&#xff0c;组网模式选择“N…

男女做那个全面视频网站设计方案步骤

现在有越来越多的朋友在工作中选择使用SOLIDWORKS Visualize正版软件&#xff0c;这真是太棒了!这次的主题是小索带大家了解SOLIDWORKS Visualize界面&#xff0c;让更多的朋友快速的熟悉SOLIDWORKS Visualize界面。 【菜单栏】位于界面的顶端&#xff0c;菜单栏包含多个下拉菜…

瑞安网站网站开发是分为前端和后端吗

CuratorFramework是一个ZooKeeper客户端库&#xff0c;它提供了一些用于处理ZooKeeper连接和节点操作的高级API。其中&#xff0c;blockUntilConnected方法是一个阻塞方法&#xff0c;它会一直阻塞直到客户端成功连接到ZooKeeper服务器。 具体来说&#xff0c;blockUntilConne…

杭州滨江的网站建设公司jquery 个人网站

一直以来&#xff0c;iOS端游戏作弊问题都是游戏行业的一大痛点。在当下游戏多端互通的潮流下&#xff0c;游戏作为一个整体&#xff0c;无论哪一端出现安全问题&#xff0c;都会造成更加严重的影响。因此&#xff0c;iOS端游戏安全保护也同样十分重要。 iOS独特的闭源生态&am…

怎么做hs网站黄页大全18勿看2000网站

前言 「作者主页」&#xff1a;雪碧有白泡泡 「个人网站」&#xff1a;雪碧的个人网站 ChatGPT体验地址 文章目录 前言IONetty1. 引入依赖2. 服务端4. 客户端结果 总结引导类-Bootstarp和ServerBootstrap连接-NioSocketChannel事件组-EventLoopGroup和NioEventLoopGroup 送书…

蚌埠网站制作公司价格wordpress 前台 很慢

BeetleX针对redis访问封了全async/await操作模式&#xff0c;通过它可以更高效地访问redis服务。BeetleX.Redis提供读写分离和多机故意写入处理&#xff0c;同时安全的TLS访问机制&#xff0c;在使用功能上组件支持绝大部分基础指令&#xff0c;并提供json&#xff0c;protobuf…