url传参的编码与解码
开发过程中遇到一个问题,就是在用GET方法请求接口的时候,传入的参数值中,+号会被转化为空格,传给后台。
传入的参数是:“aaa++++bbb–@%&”,被url编码和解码后,传入后台就变成了截图所示。加号全部被转为空格。截图的请求方式之所以展示为post,是因为前端做了接口拦截设置,把所有的GET请求转为了POST请求。
后来把请求方式改为post,content-type设置为xxx-form-urlencoded,+号依然被转化为空格传给了后台,如下方截图所示
刚开始以为只是content-type:xxx-form-urlencoded导致的。
后来在chrome的url搜索栏输入www.baidu.com/aa+bb?cc=e+f然后按enter键看了下接口请求,如下图
最终的解决方案是:后台修改了传参类型,前台用POST,改为JSON传参。
后面查了一些资料。以下是查询所得:
对于Url来说,之所以要进行编码,是因为Url中有些字符会引起歧义。
例如,Url参数字符串中使用key=value键值对这样的形式来传参,键值对之间以&符号分隔,如/s?q=abc&ie=utf-8。如果你的value字符串中包含了=或者&,那么势必会造成接收Url的服务器解析错误,因此必须将引起歧义的&和=符号进行转义,也就是对其进行编码。
又如,**Url的编码格式采用的是ASCII码,而不是Unicode,这也就是说你不能在Url中包含任何非ASCII字符,例如中文。**否则如果客户端浏览器和服务端浏览器支持的字符集不同的情况下,中文可能会造成问题。
Url编码的原则就是使用安全的字符(没有特殊用途或者特殊意义的可打印字符)去表示那些不安全的字符。
哪些字符需要编码?
**RFC3986文档规定,Url中只允许包含英文字母(a-zA-Z)、数字(0-9)、-_.~4个特殊字符以及所有保留字符。**RFC3986文档对Url的编解码问题做出了详细的建议,指出了哪些字符需要被编码才不会引起Url语义的转变,以及对为什么这些字符需要编码做出了相应的解释。
US-ASCII字符集中没有对应的可打印字符:Url中只允许使用可打印字符。US-ASCII码中的10-7F字节全都表示控制字符,这些字符都不能直接出现在Url中。同时,对于80-FF字节(ISO-8859-1),由于已经超出了US-ACII定义的字节范围,因此也不可以放在Url中。
保留字符:Url可以划分成若干个组件,协议、主机、路径等。有一些字符(
JS中encodeURIComponent(URL)编码与decodeURIComponent(URL)解码详解 (1)encodeURIComponent(url)函数 定义和用法 encodeUR ... 1. 对URL 传递的参数进行编码 使用URL 传递参数数据,就是在 URL地址后面加上适当的参数.URL 实体对这些参数进行处理.其使用的方式如下面的格式: 显而易见,这种方法将会把参数暴露出来,安 ... 需求:我们公司做机票订购服务,有自己的平台的订单,也有第三方网站向我们网站导入的用户订单,第三方导入的是通过url传参的方式导入.url会携带用户的相关信息. url里面的参数是经过aes加密和bas ... get请求URL传参需要 进行url编码,只能编码参数,不能整个编码URL package com.bonc.bxm.security.common.util;import lombok.extern ... 利用url传参时如果url中的参数是中文时因为编码类型不同在页面中获取会出现乱码 使用此方法能获取url中的参数值 并解决乱码问题 调用时直接 GetUrlByParamName("参数名& ... URL传参时,中文参数乱码的解决: 今天在工作中遇到了这样的一个问题,在页面之间跳转时,我将中文的参数放入到url中,使用location进行跳转传参,但是发现接收到的参数值是乱码.我的代码是这样写的 ... 项目用到ReportViewer报表,里面的参数是通过url传参给报表,参数中含有中文字符,页面显示这些参数时发现中文部分都乱码,英文字符和数字都显示正常,于是便搜寻解决之法,最终得以解决.方法如下: ... 一.中文编码有三种形式 1.utf-8编码 2.gbk编码 3.gb2312编码 这三种编码方式对汉字编码的组数不一样,其中2和3,一个汉字对应的都是两组%XX,而1对应的 ... 2019独角兽企业重金招聘Python工程师标准>>> 我们经常会遇到这样的场景:在URL中传递参数,如果该参数为中文,如果设置不当,会出现乱码问题. URL传参所使用的编码为服务器 ... 之前都一直很不了解中文编码得问题,之前在做项目中没碰到那么头痛的问题.所以一直没有了解中文乱码的问题. 问题描述: 地址: http://localhost:8080/sun-government/c ...url传参的编码与解码相关推荐
最新文章
热门文章