产品
:大叔
有用户反映帐户不能绑定公众号。大叔
:啊咧咧?怎么可能,我看看?大叔
:恩?这也没问题啊,魏虾米。大叔
:仍是没问题啊,挖叉类。大叔
:T T,话说产品姐姐
是否是Java
提供接口的时候,没有对URL
进行encodeURI
。产品
:啊咧咧?我问问看?javascript
大叔
:小二
你给我过来!小二
:啊咧咧?怎么了大叔
?大叔
:知道在URL
中的+
有时候会变成什么吗?小二
:啊咧咧?不是+
吗?大叔
:知道在URL
中的空格
有时候会变成什么吗?小二
:啊咧咧?不是空格
吗?大叔
:还不赶快本身去查查看!别也成了挖坑型选手。php
维基百科中关于百分号编码
中有段说明。java
当HTML表单中的数据被提交时,表单的域名与值被编码并经过HTTP的GET或者POST方法甚至更古远的email把请求发送给服务器。这里的编码方法采用了一个很是早期的通用的URI百分号编码方法,而且有不少小的修改如新行规范化以及
把空格符的编码"%20"替换为"+"
. 按这套方法编码的数据的MIME类型是application/x-www-form-urlencoded, 当前仍用于(虽然很是过期了)HTML与XForms规范中. 此外,CGI规范包括了web服务器如何解码这类数据、利用这类数据的内容。
在浏览器里输入URLhttps://www.baidu.com/s?wd=小二+大叔
,这时候百度搜索框中出现的是小二 大叔
,搜索框
中+
神奇的变成了空格
。git
在浏览器里输入URLhttps://www.baidu.com/s?wd=小二 大叔
,这时候百度搜索框中出现的是小二 大叔
,URL
中空格
的变成%20
。github
在浏览器里输入URLhttps://www.baidu.com/s?wd=小二%2B大叔
,这时候百度搜索框中出现的是小二+大叔
,搜索框
中%2B
的变成+
。web
<?php echo $_POST['word'];
POST /1.php HTTP/1.1 Host: 127.0.0.1 Cache-Control: no-cache Postman-Token: fed5740c-aceb-0f57-edc9-cf42a275b35a Content-Type: application/x-www-form-urlencoded word=%2B%2B%2B+%2B%2B%2B
+++ +++
在社交登陆或微信公众号等时候,咱们经常会在URL
中使用到回调地址来处理验证成功后的页面跳转。segmentfault
例如:浏览器
lionis.taroball.com?username=lionis&sex=man
URL
中附加回调信息时www.xxx.com?redirect=lionis.taroball.com?username=lionis&sex=man
。这个时候尴尬的问题出现了,sex=man
在这个时候变成了www.xxx.com
的参数了,而不是lionis.taroball.com
的参数了。服务器
这个时候就须要对回调信息进行encodeURL
。微信
<?php // 文件名为test.php echo $_GET['redirect'];
localhost/test.php?redirect=lionis.taroball.com%3Fusername%3Dlionis%26sex%3Dman
lionis.taroball.com?username=lionis&sex=man
localhost/test.php?redirect=lionis.taroball.com?username=lionis&sex=man
lionis.taroball.com?username=lionis
+
须要对URL
进行encodeURL
,把+
编码成%2B
。URL
须要encodeURL
。javascript
须要使用正则
来进行替换
。关键字
使用decodeURL
。URL
中的URL
也须要进行encodeURL
POST
的Content-Type
默认是application/x-www-form-urlencoded
,顾名思义对URL
进行了encodeURL
。POST
能够看我以前写的你所不知道的POST。
在困惑的城市里总少不了并肩同行的
伙伴
让咱们一块儿成长。
点赞
。小星星
。m353839115
。本文原稿来自 PushMeTop