我正在尝试编写Java类来登录某个网站。POST请求中发送的登录数据是
user%5Blogin%5D=username&user%5Bpassword%5D=123456
我很好奇,是什么%5B
和%5D
手段的关键用户登录。
如何编码这些数据?
我正在尝试编写Java类来登录某个网站。POST请求中发送的登录数据是
user%5Blogin%5D=username&user%5Bpassword%5D=123456
我很好奇,是什么%5B
和%5D
手段的关键用户登录。
如何编码这些数据?
Answers:
按照这个答案在这里: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, ']');
}
希望这将有助于人们在遇到这个问题时解决他们的问题。
[]
%5B%5D
在URL编码时被替换。
为了快速浏览,您可以使用此在线工具进行百分比编码/解码。
数据可能最初是从看起来像这样的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
要么:
另一端的Web服务器可能会使用user[login]
和user[password]
参数,并user
使用login
和password
包含这些值的字段将它们变成一个对象。
最重要的是为什么这些符号出现在url中。请参阅https://www.php.net/manual/zh/function.parse-str.php#76792,具体是:
parse_str('foo[]=1&foo[]=2&foo[]=3', $bar);
以上产生:
$bar = ['foo' => ['1', '2', '3'] ];
什么是在数组中分离查询变量的方法(至少在php中)。