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


265

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

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

我很好奇,是什么%5B%5D手段的关键用户登录

如何编码这些数据?

Answers:


482

按照这个答案在这里str='foo%20%5B12%5D'编码foo [12]

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

这称为百分比编码,用于对url参数值中的特殊字符进行编码。

编辑顺便说一句,当我阅读https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/encodeURI#Description时,我突然想到了为什么这么多人进行相同的搜索。请参阅页面底部的注释:

还要注意,如果有人希望遵循最新 的URL RFC3986,在形成可能是URL一部分的内容(例如主机)时,保留方括号(用于IPv6)并因此不进行编码,则以下内容可能会有所帮助。

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

希望这将有助于人们在遇到这个问题时解决他们的问题。


1
非常感谢你。
Rakib Ansary'4

@TacticalCoder:是的,谢谢。这是我的英语不好。立即纠正。
鲍里斯·斯特兰杰夫

您的RFC3986链接已损坏
DudeOnRock 2013年




3

为了快速浏览,您可以使用此在线工具进行百分比编码/解码。


1
尽管此链接可以回答问题,但最好在此处包括答案的基本部分,并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会无效。- 评论
彼得

@Peter谢谢,但这只是在线工具的链接,在这里可能会有所帮助。由于已经提供了答案,因此无需进一步说明。
Krzysztof Przygoda '18

1

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

<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>

如果方法是“获取”而不是“发布”,则单击“提交”按钮将带您到一个看起来像这样的URL:

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

要么:

http://example.com/?user [登录] =用户名和用户[密码] = 123456

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


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.