Wofür stehen% 5B und% 5D in POST-Anforderungen?


264

Ich versuche, eine Java-Klasse zu schreiben, um mich bei einer bestimmten Website anzumelden. Die Daten, die in der POST-Anforderung zum Anmelden gesendet wurden, sind

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

Ich bin gespannt was das %5Bund %5Dim Key User Login bedeutet .

Wie verschlüssele ich diese Daten?

Antworten:


481

Gemäß dieser Antwort hier : str='foo%20%5B12%5D'codiert foo [12]:

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

Dies wird als Prozentcodierung bezeichnet und wird zum Codieren von Sonderzeichen in den URL-Parameterwerten verwendet.

BEARBEITEN Übrigens, als ich https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/encodeURI#Description las , kam mir gerade der Gedanke, warum so viele Leute dieselbe Suche durchführen. Siehe den Hinweis unten auf der Seite:

Beachten Sie auch, dass Folgendes hilfreich sein kann , wenn Sie dem neueren RFC3986 für URLs folgen möchten , indem Sie eckige Klammern reservieren (für IPv6) und daher nicht codieren, wenn Sie etwas bilden, das Teil einer URL sein könnte (z. B. ein Host).

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

Hoffentlich hilft dies den Menschen, ihre Probleme zu lösen, wenn sie auf diese Frage stoßen.


1
Vielen Dank dafür.
Rakib Ansary

@TacticalCoder: Ja, danke. Das ist mein schlechtes Englisch. Sofort korrigieren.
Boris Strandjev

Ihre RFC3986-Verbindung ist unterbrochen
DudeOnRock




3

Um einen kurzen Blick darauf zu werfen, können Sie mit diesem Online-Tool Prozent-En / Decodieren .


1
Während dieser Link die Frage beantworten kann, ist es besser, die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz bereitzustellen. Nur-Link-Antworten können ungültig werden, wenn sich die verknüpfte Seite ändert. - Aus dem Rückblick
Peter

@ Peter Danke, aber dies ist nur ein Link zum Online-Tool, der hier hilfreich sein kann. Da die Antworten bereits gegeben wurden, sind keine weiteren Erklärungen erforderlich.
Krzysztof Przygoda

1

Die Daten wurden wahrscheinlich ursprünglich aus einem Webformular veröffentlicht, das ungefähr so ​​aussieht (aber wahrscheinlich viel komplizierter):

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

Wenn die Methode "get" anstelle von "post" wäre, würden Sie durch Klicken auf die Schaltfläche "Senden" zu einer URL gelangen, die ungefähr so ​​aussieht:

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

oder:

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

Der Web - Server am anderen Ende nimmt wahrscheinlich die user[login]und user[password]Parameter, und sie in ein machen userObjekt mit loginund passwordFeldern die Werte enthalten.


0

Nicht zuletzt ist es wichtig, warum diese Symbole in der URL vorkommen. Siehe https://www.php.net/manual/en/function.parse-str.php#76792 , insbesondere:

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

das obige erzeugt:

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

und was ist DIE Methode, um Abfragevariablen in Arrays zu trennen (zumindest in PHP).

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.