web-dev-qa-db-fra.com

Qu'est-ce que% 5B et% 5D dans POST les demandes représentent?

J'essaie d'écrire une classe Java pour me connecter à un certain site Web. Les données envoyées dans la demande POST pour se connecter sont

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

Je suis curieux de savoir ce que %5B et %5D signifient dans la clé login utilisateur .

Comment encoder ces données?

213
Rakib Ansary

Selon cette réponse, sur ici : str='foo%20%5B12%5D' code foo [12]:

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

Ceci s'appelle percent encoding et est utilisé pour encoder des caractères spéciaux dans les valeurs du paramètre url.

EDIT Au fait, alors que je lisais https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/encodeURI#Description , je viens juste de comprendre pourquoi tant de gens font la même recherche. Voir la note au bas de la page:

Notez également que si vous souhaitez suivre la plus récente RFC3986 pour les URL, faire des crochets réservés (pour IPv6) et donc pas encodé lors de la création d’un élément pouvant faire partie d’une URL (comme un hôte .__), les éléments suivants peuvent aider.

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

J'espère que cela aidera les gens à résoudre leurs problèmes lorsqu'ils tomberont sur cette question.

390
Boris Strandjev

Ils représentent [ et ]. Le codage est appelé "Codage URL" .

25
ruakh

[] est remplacé par %5B%5D au moment du codage de l'URL.

10
Lalit Bhudiya

Eh bien, c'est l'encodage url habituel

Donc, ils représentent [, respectivement ]

9
Voo

Pour jeter un coup d'œil rapide, vous pouvez décoder/décoder en utilisant cet outil en ligne .

2
Krzysztof Przygoda

Les données auraient probablement été publiées à l'origine à partir d'un formulaire Web ressemblant un peu à ceci (mais probablement beaucoup plus compliqué):

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

Si la méthode était "get" au lieu de "post", un clic sur le bouton d'envoi vous mènerait à une URL ressemblant un peu à ceci:

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

ou:

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

Le serveur Web de l'autre extrémité prendra probablement les paramètres user[login] et user[password] et les transformera en un objet user avec des champs login et password contenant ces valeurs.

0
mwfearnley