遇到403 Forbidden ,服务器端查询后结果是http get查询字符串中包含非法字符

news/2024/9/18 3:48:00/文章来源:https://www.cnblogs.com/Dongmy/p/18367132

原文链接:https://blog.csdn.net/mm_hello11/article/details/84261672

 

报错解释:

HTTP GET请求通过查询字符串(即URL中"?"后面的部分)传递参数。如果查询字符串包含非法字符,服务器可能会拒绝请求并返回错误,因为这些非法字符可能会破坏URL的格式或者服务器的安全性。

非法字符通常指的是除字母、数字和某些预定义的字符(如-._~!$&'()*+,;=)以外的所有字符。

HTTP标准的两种请求方式:Post和Get,关于这两种请求方式的区别相关资料云集,这里不做阐述。然而,你是否注意到:
我们通过get方式从浏览器的地址栏传递数据给服务器,当参数的值中含有某些特殊转义字符的时候,没经过些许处理将得不到预期的结果。

例如:
当我们的请求的url为:
http: // localhost:8080/index.jsp?parameter=kalman03#kalman#1
或许你预期在服务器端获得的parameter的结果为kalman03#kalman#1,错!!!实际上得到parameter的值为kalman03。
这究竟是为什么呢?
原因:
parameter的值含有特殊字符#,浏览器自动截断#字符和其后面的值,这样得到的值就为kalman03。
推广:
当参数值中含有特殊字符 ?!=()#%& 的时候,获得的值同样也会出现与预期结果不一致的情况。
解决方案:
方法1:通过post方式传递数据;
方法2:对参数进行一次编码parameter=escape(parameter);

第一种解决方案不解释也能明白,现在解释下第二种方法的处理:
JavaScript escape() 函数的功能是把其中某些字符替换成了十六进制的转义序列。该方法不会对ASCII 字母和数字进行编码,也不会对下面这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。其他所有的字符都会被转义序列替换

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

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

相关文章

MAC (Multiply-Accumulate)

MAC (Multiply-Accumulate)

Xfce漫游(1) - Xfce与相关概念

用了好几年Xfce桌面了,但是从来没有仔细研究过Xfce底下相关的运行逻辑,最近才对相关的底层概念感兴趣并去尝试了解了一下,但是它的体系架构以及复杂的依赖关系令初来乍到者望而却步。没办法,写点什么方便理解吧。 这一系列文章主要是探讨Xfce底层实现的,不会过多聚焦于美化…

windows10清理缓存命令,windows10清理缓存命令是什么

在Windows 10系统中,清除缓存可以通过多种方法实现,但严格来说,并没有一个单一的“指令”可以一键清除所有类型的缓存。不过,我可以为你介绍几种常用的方法来清除不同类型的缓存。 一、使用磁盘清理工具 磁盘清理工具是Windows 10内置的一个非常实用的工具,可以帮助用户删…

问题:ETL中写入数据到Clickhouse抛出 Code: 27. DB::ParsingException: Cannot parse input

问题描述 问题:ETL中写入数据到Clickhouse抛出 Code: 27. DB::ParsingException: Cannot parse input 问题原因: 目标字段的长度和精度不足以容纳源字段 问题解决方法:案例1: 源是timestamp,目标是datetime修改结果: 创建目标表的时候选择高精度的字段类型案例2: 源是带…

CSS3第三天(盒子模型+浮动)

盒子模型 1.内边距padding 指定了高宽,再指定内边距,则会撑开盒子。 盒子未指定高宽(继承算未指定),则不会撑开盒子。 2.外边距margin 用于控制盒子之间的距离。同padding的简写方式。 margin-left左外边距 right top bottom 块级盒子水平居中,需满足两个条件:①盒子必须…

定位

浮动可以让多个块级盒子一行没有缝隙排列显示,经常用于横向排列盒子。 平铺 定位可以让盒子自由的在某个盒子内移动或者固定屏幕中某个位子,并且可以压住其他盒子。 叠积 定位:定位模式(position属性)+偏移量 position属性:static、relative、absolute、fixed top、botto…

Java基础语法笔记

Java基础语法 1.注释,标识符,关键字 注释line comment:// block comment:/* */ java doc:/** */ 标识符、关键字数据类型

相对路径与绝对路径

一、什么是绝对路径 大家都知道,在我们平时使用计算机时要找到需要的文件就必须知道文件的位置,而表示文件的位置的方式就是路径,例如只要看到这个路径:c:/website/img/photo.jpg我们就知道photo.jpg文件是在c盘的website目录下的img子目录中。类似于这样完整的描述文件位置…

【日记】北美的飓风怎么这么恐怖,地球真的能活人吗……(2252 字)

正文今天还是把周末的所有事情一起写。每到周末都没什么写日记的动力。周五下午出去吃饭,吃一半,斯视频突然打过来。我当时有点懵,不知道他要干什么,但还是接了。第一个画面就是他摆弄自行车。他跟我说,自行车踏板和链条有问题,踩下去的时候转一半就动不了了。经过我们二…

使用 preloadRouteComponents 提升 Nuxt 应用的性能

title: 使用 preloadRouteComponents 提升 Nuxt 应用的性能 date: 2024/8/19 updated: 2024/8/19 author: cmdragon excerpt: preloadRouteComponents 是提升 Nuxt 应用性能的一个简单而有效的工具。通过在适当的时候预加载路由组件,你可以为用户提供更快速、更流畅的导航体…

【VMware VCF】VMware Cloud Foundation Part 07:管理工作负载域中的主机和集群。

一个标准 VMware Cloud Foundation 实例中具有管理工作负载域和 VI 工作负载域两种类型,管理域有且只有一个,而 VI 域可以创建多个,每种工作负载域中可以具有多个 vSphere 集群,而每个集群中可以具有多台主机,有关工作负载域所支持的集群和主机数等限制请查看 VMware Conf…

牛客周赛 Round 56

牛客周赛 Round 56\(A\) 牛客 NC277678 面包店故事 \(AC\)选择结构。点击查看代码 int main() {int x,y,n;cin>>x>>y>>n;if(x+y<=n){cout<<"YES"<<endl;}else{cout<<"NO"<<endl;}return 0; }\(B\) 牛客 NC27…