2012-04-01 11 views
176

Estoy tratando de escribir una clase de Java para iniciar sesión en un determinado sitio web. Los datos enviados en la solicitud POST para entrar es¿Qué significa% 5B y% 5D en solicitudes POST?

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

estoy curioso lo que el %5B y %5D significa que en el inicio de sesión de usuario clave .

¿Cómo codifico estos datos?

Respuesta

317

De acuerdo con esta respuesta sobre here: str='foo%20%5B12%5D' codifica foo [12]:

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

Esto se llama percent encoding y se usa en la codificación de caracteres especiales en los valores del parámetro url.

EDIT Por cierto, mientras estaba leyendo https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/encodeURI#Description, se me ocurrió por qué tantas personas hacen la misma búsqueda. Véase la nota en la parte inferior de la página:

También tenga en cuenta que si se quiere seguir la más reciente RFC3986 para la URL de, por lo que corchetes reservado (para IPv6) y por lo tanto no codificado cuando se forma algo que podría ser parte de una URL (como un host ), lo siguiente puede ayudar.

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

Esperamos que esto ayudará a la gente a resolver sus problemas cuando se topan con esta pregunta.

+1

Muchas gracias por eso. –

+0

@TacticalCoder: sí, gracias. Este es mi pobre inglés. Corregirlo de inmediato. –

+0

su enlace RFC3986 está roto – DudeOnRock

8

Bueno, es la habitual url encoding

Así que representan [, respectivamente ]

7

[] se reemplaza por %5B%5D en el tiempo de codificación URL.

+2

Me encontraron la respuesta .... gracias amigo. –

0

Los datos probablemente habrían sido publicado originalmente de un formulario web buscando un poco como este (pero probablemente mucho más complicado):

<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 el método era "obtener" en lugar de "post", al hacer clic el botón de enviar le tomaría a una URL buscando un poco como esto:

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

o:

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

El servidor web en el otro extremo es probable que tome los parámetros user[login] y user[password] y convertirlos en un objeto user con loginpassword y campos que contienen esos valores.

2

Para echar un vistazo rápido, puede porcentaje-en/decodificar usando this online tool.

Cuestiones relacionadas