Co oznacza %5B i % 5d w żądaniach POST?

Próbuję napisać klasę Java, aby zalogować się do określonej strony internetowej. Dane przesłane w żądaniu logowania POST to

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

Jestem ciekaw co oznaczają %5B i %5D w kluczu login użytkownika .

Jak zakodować te dane?

Author: Rakib Ansary, 2012-04-01

6 answers

Zgodnie z tą odpowiedzią na tutaj: str='foo%20%5B12%5D' Kodowanie foo [12]:

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

Nazywa się to percent encoding i jest używane w kodowaniu znaków specjalnych w wartościach parametrów url.

EDIT przy okazji jak czytałam https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/encodeURI#Descriptionwłaśnie przyszło mi do głowy, dlaczego tak wielu ludzi szuka tego samego. Zobacz notatkę na dole strony:

Także zauważ, że jeśli ktoś chce podążać za nowszym RFC3986 dla adresów URL, dzięki czemu nawiasy kwadratowe są zarezerwowane (dla IPv6), a więc nie zakodowane podczas tworzenia czegoś, co może być częścią adresu URL (np. host), może pomóc:

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

Miejmy nadzieję, że to pomoże ludziom rozwiązać ich problemy, gdy natkną się na to pytanie.

 359
Author: Boris Strandjev,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-03 21:22:45

Reprezentują [ i ]. Kodowanie nazywa się "kodowanie URL".

 24
Author: ruakh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-01 16:28:05

Cóż to jest zwykłe kodowanie url

Czyli oznaczają [, odpowiednio ]

 9
Author: Voo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-01 16:28:36

[] jest zastępowany przez %5B%5D w czasie kodowania URL.

 8
Author: Lalit Bhudiya,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-08 13:00:43

Aby szybko się przyjrzeć, możesz percent-en / decode za pomocą tego narzędzia online .

 2
Author: Krzysztof Przygoda,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-19 12:51:11

DANE prawdopodobnie zostałyby wysłane z formularza internetowego wyglądającego trochę tak (ale prawdopodobnie znacznie bardziej skomplikowanego):

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

Jeśli metoda byłaby " get "zamiast " post", kliknięcie przycisku Wyślij przeniesie Cię do adresu URL wyglądającego trochę tak:

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

Lub:

Http://example.com/?user[login] = nazwa użytkownika&użytkownika [Hasło]=123456

Serwer WWW po drugiej stronie prawdopodobnie pobierze parametry user[login] i user[password] i przekształci je w obiekt user z polami login i password zawierającymi te wartości.

 0
Author: mwfearnley,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-13 15:07:43