POST请求中的%5B和%5D代表什么?

时间:2012-04-01 16:25:28

标签: java post httpwebrequest

我正在尝试编写一个Java类来登录某个网站。 POST请求中发送的数据是

user%5Blogin%5D=uesrname&user%5Bpassword%5D=123456

我很好奇{strong}用户登录中的%5B%5D含义。

如何编码这些数据?

8 个答案:

答案 0 :(得分:409)

根据here以上的回答:str='foo%20%5B12%5D'foo [12]进行编码:

%20 is space
%5B is '['
and %5D is ']'

这称为percent encoding,用于编码url参数值中的特殊字符。

编辑在我阅读https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/encodeURI#Description的过程中,我突然想到为什么有这么多人进行同样的搜索。请参阅页面底部的注释:

  

另请注意,如果有人希望关注最近的RFC3986   对于URL,保留方括号(对于IPv6),因此不保留   在形成可能是URL的一部分的东西时编码(例如   主持人),以下内容可能有所帮助。

function fixedEncodeURI (str) {
    return encodeURI(str).replace(/%5B/g, '[').replace(/%5D/g, ']');
}

希望这可以帮助人们在遇到这个问题时解决他们的问题。

答案 1 :(得分:25)

他们代表[]。编码称为"URL encoding"

答案 2 :(得分:10)

[]在网址编码时被%5B%5D替换。

答案 3 :(得分:9)

通常url encoding

所以他们分别代表[ ]

答案 4 :(得分:3)

要找出这些值,您只需在浏览器中使用 Console 并执行以下操作

console.log(decodeURI('user%5Blogin%5D=username&user%5Bpassword%5D=123456'))

答案 5 :(得分:2)

要快速查看,您可以使用this online tool进行百分比/解码。

答案 6 :(得分:1)

数据可能最初是从网页表单中发布的,看起来有点像这样(但可能要复杂得多):

<form action="http://example.com" method="post">

  User login    <input name="user[login]"    /><br />
  User password <input name="user[password]" /><br />

  <input type="submit" />
</form>

如果方法是&#34;得到&#34;而不是&#34;发布&#34;,点击提交按钮会转到一个看起来像这样的网址:

  

http://example.com/?user%5Blogin%5D=username&user%5Bpassword%5D=123456

或:

  

http://example.com/?user[login]=username&user[password]=123456

另一端的网络服务器可能会获取user[login]user[password]个参数,并将它们变成user对象loginpassword包含这些值的字段。

答案 7 :(得分:0)

最重要的是为什么这些符号出现在url中。 请参见https://www.php.net/manual/en/function.parse-str.php#76792,具体是:

parse_str('foo[]=1&foo[]=2&foo[]=3', $bar);

以上产生:

$bar = ['foo' => ['1', '2', '3'] ];

什么是在数组中分离查询变量的方法(至少在php中)。