POST isteklerindeki% 5B ve% 5D ne anlama geliyor?


266

Belirli bir web sitesine giriş yapmak için bir Java sınıfı yazmaya çalışıyorum. POST oturum açma isteğinde gönderilen veriler

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

Anahtar kullanıcı girişinde%5B ve ne %5Danlama geldiğini merak ediyorum .

Bu verileri nasıl kodlarım?

Yanıtlar:


482

Buradaki cevaba göre : str='foo%20%5B12%5D'kodlar foo [12]:

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

Buna yüzde kodlama denir ve url parametre değerlerindeki özel karakterlerin kodlanmasında kullanılır.

DÜZENLEME https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/encodeURI#Description okurken , neden bu kadar çok insanın aynı aramayı yaptığını gördüm . Sayfanın altındaki nota bakın:

Ayrıca , URL'ler için en yeni RFC3986'yı takip etmek istiyorsa , köşeli parantezleri ayrılmış (IPv6 için) yapmak ve böylece bir URL'nin (ana bilgisayar gibi) bir parçası oluştururken kodlanmamış olmanın aşağıdakilere yardımcı olabileceğini unutmayın.

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

Umarım bu, insanların bu soruya rastladıklarında sorunlarını çözmelerine yardımcı olacaktır.


1
Bunun için çok teşekkür ederim.
Rakib Ansary

@TacticalCoder: evet, teşekkür ederim. Bu benim zayıf İngilizcem. Hemen düzeltin.
Boris Strandjev

bağlantınız kopuk
DudeOnRock




3

Hızlı bir bakış için, bu çevrimiçi aracı kullanarak yüzde-en / kod çözme yapabilirsiniz .


1
Bu bağlantı soruyu cevaplayabilse de, cevabın temel kısımlarını buraya eklemek ve bağlantıyı referans olarak sağlamak daha iyidir. Bağlantı verilen sayfa değişirse, yalnızca bağlantı yanıtları geçersiz olabilir. - Şu kaynaktan
Peter

@Peter Teşekkürler, ancak bu sadece çevrimiçi araca bir bağlantıdır, burada yardımcı olabilir. Cevaplar zaten verildiğinden daha fazla açıklamaya gerek yoktur.
Krzysztof Przygoda

1

Veriler muhtemelen başlangıçta şöyle görünen bir web formundan (muhtemelen çok daha karmaşık) yayınlanmış olabilir:

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

Yöntem "gönderi" yerine "get" olsaydı, gönder düğmesini tıklamak sizi şöyle görünen bir URL'ye götürür:

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

veya:

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

Diğer uçtaki web sunucusu user[login]ve user[password]parametrelerini alıp bu değerleri içeren bir usernesneye loginve passwordalanlara dönüştürür .


0

En önemlisi, bu sembollerin neden url'de ortaya çıkmasıdır. Bkz. Https://www.php.net/manual/en/function.parse-str.php#76792 , özellikle:

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

yukarıdakiler üretir:

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

ve sorgularda değişkenleri ayırmak için THE yöntemi nedir (en azından php olarak)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.