Cosa significano% 5B e% 5D nelle richieste POST?


266

Sto cercando di scrivere una classe Java per accedere a un determinato sito Web. I dati inviati nella richiesta POST per accedere sono

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

Sono curioso di sapere cosa significhi %5Be %5Dnel login utente chiave .

Come codifico questi dati?

Risposte:


482

Come da questa risposta qui : str='foo%20%5B12%5D'codifica foo [12]:

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

Questo si chiama codifica percentuale e viene utilizzato nella codifica di caratteri speciali nei valori del parametro url.

EDIT A proposito mentre leggevo https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/encodeURI#Description , mi è venuto in mente perché così tante persone fanno la stessa ricerca. Vedi la nota in fondo alla pagina:

Si noti inoltre che se si desidera seguire la più recente RFC3986 per gli URL, rendendo riservate le parentesi quadre (per IPv6) e quindi non codificate quando si forma qualcosa che potrebbe far parte di un URL (come un host), potrebbe essere utile quanto segue.

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

Speriamo che questo aiuti le persone a risolvere i loro problemi quando si imbattono in questa domanda.


1
Grazie mille per quello.
Rakib Ansary

@TacticalCoder: sì, grazie. Questo è il mio povero inglese. Correggendolo subito.
Boris Strandjev,

il tuo collegamento RFC3986 è interrotto
DudeOnRock




3

Per dare una rapida occhiata, puoi percent-en / decode usando questo strumento online .


1
Sebbene questo collegamento possa rispondere alla domanda, è meglio includere qui le parti essenziali della risposta e fornire il collegamento come riferimento. Le risposte di solo collegamento possono diventare non valide se la pagina collegata cambia. - Dalla recensione
Peter

@Peter Grazie, ma questo è solo un link allo strumento online, che può essere utile qui. Poiché le risposte sono già state fornite, non sono necessarie ulteriori spiegazioni.
Krzysztof Przygoda,

1

Probabilmente i dati sarebbero stati pubblicati originariamente da un modulo Web simile a questo (ma probabilmente molto più complicato):

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

Se il metodo fosse "get" anziché "post", facendo clic sul pulsante di invio verrai indirizzato a un URL simile a questo:

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

o:

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

Il server web all'altro capo probabilmente prenderà la user[login]e user[password]parametri, e trasformarli in un useroggetto con logine passwordcampi contenenti tali valori.


0

Non meno importante è il motivo per cui questi simboli si presentano nell'URL. Vedi https://www.php.net/manual/en/function.parse-str.php#76792 , in particolare:

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

quanto sopra produce:

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

e qual è il metodo THE per separare le query var negli array (almeno in php).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.