web-dev-qa-db-ja.com

POST要求の%5Bと%5Dは何の戦略ですか?

特定のWebサイトにログインするためのJavaクラスを作成しようとしています。 POSTログイン要求で送信されたデータは

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

%5B%5Dがキーのユーザーログインで何を意味するのか興味があります。

これらのデータをエンコードする方法

224
Rakib Ansary

この答えのとおり ここstr='foo%20%5B12%5D'foo [12]をエンコードします。

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

これは パーセントエンコード と呼ばれ、urlパラメータ値の特殊文字のエンコードに使用されます。

EDITところで、読んでいたところ https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/encodeURI#説明 、なぜこんなに多くの人が同じ検索をするのか私には起こりました。ページ下部のメモを参照してください。

URLのより最近の RFC3986 に従うことを望むならば、(IPv6のために)角括弧を予約し、それ故に可能性のある何かを形成するときにエンコードしないURL(ホストなど)の一部である場合は、次のことが役に立ちます。

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

うまくいけば、これは人々がこの質問につまずくとき彼らの問題を解決するのを助けるでしょう。

414
Boris Strandjev

それらは[]を表します。エンコーディングは 「URLエンコーディング」 と呼ばれます。

25
ruakh

URLエンコード時に[]%5B%5Dに置き換えられます。

10
Lalit Bhudiya

まあそれは普通の URLエンコーディング です

それで、それらはそれぞれ[]を表します。

9
Voo

簡単に見ると、 このオンラインツール を使用してパーセントエン/デコードできます。

2

データは、おそらくこのように見える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>

メソッドが "post"ではなく "get"の場合は、送信ボタンをクリックすると、次のようなURLに移動します。

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

または

http://example.com/?user [login] =ユーザー名&user [パスワード] = 123456

反対側のWebサーバはおそらくuser[login]user[password]パラメータを取り、それらをそれらの値を含むuserloginフィールドを持つpasswordオブジェクトにします。

1
mwfearnley