產品
:大叔
有用戶反映帳戶不能綁定公衆號。大叔
:啊咧咧?怎麼可能,我看看?大叔
:恩?這也沒問題啊,魏蝦米。大叔
:仍是沒問題啊,挖叉類。大叔
: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