Que signifient% 5B et% 5D dans les requêtes POST?


266

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

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

Je suis curieux de savoir ce %5Bque %5Dsignifie le et dans la connexion de l'utilisateur clé .

Comment encoder ces données?

Réponses:


482

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

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

C'est ce qu'on appelle le codage en pourcentage et est utilisé pour coder les caractères spéciaux dans les valeurs des paramètres url.

EDIT Au fait, alors que je lisais https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/encodeURI#Description , il m'est venu à l'esprit pourquoi tant de gens font la même recherche. Voir la note en bas de page:

Notez également que si l'on souhaite suivre la plus récente RFC3986 pour les URL, en faisant des crochets réservés (pour IPv6) et donc non codés lors de la formation de quelque chose qui pourrait faire partie d'une URL (comme un hôte), ce qui suit peut aider.

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

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


1
Merci beaucoup pour ça.
Rakib Ansary

@TacticalCoder: oui, merci. Ceci est mon pauvre anglais. Le corriger tout de suite.
Boris Strandjev

votre lien RFC3986 est rompu
DudeOnRock




3

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


1
Bien que ce lien puisse répondre à la question, il est préférable d'inclure les parties essentielles de la réponse ici et de fournir le lien de référence. Les réponses de lien uniquement peuvent devenir invalides si la page liée change. - De l'avis
Peter

@Peter Merci, mais ce n'est qu'un lien vers l'outil en ligne, qui peut être utile ici. Étant donné que les réponses ont déjà été fournies, il n'y a pas besoin d'explications supplémentaires.
Krzysztof Przygoda

1

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", cliquer sur le bouton soumettre vous amènerait à une URL ressemblant un peu à ceci:

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

ou:

http://example.com/?user}login

Le serveur Web à l'autre bout prendra vraisemblablement la user[login]et les user[password]paramètres, et en faire un userobjet avec loginet passwordchamps contenant ces valeurs.


0

La raison pour laquelle ces symboles apparaissent dans l'URL n'est pas moins importante. Voir https://www.php.net/manual/en/function.parse-str.php#76792 , en particulier:

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

ce qui précède produit:

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

et quelle est LA méthode pour séparer les variables de requête dans les tableaux (en php, au moins).

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.