¿Cómo puedo detener el navegador de los valores de formulario de encoding de URL en GET

Tengo un formulario con method="get" . En el formulario, necesito pasar la URL de un archivo CSS pero está http%3A%2F%2Fwww... en http%3A%2F%2Fwww... etc.

¿Hay alguna manera de detener la encoding de la URL cuando está rompiendo el archivo?

Gracias

Fondo

Es un poco más sutil de lo que uno podría pensar a primera vista. Para cualquier URL, que es una forma específica del estándar URI, ciertos caracteres son especiales. Entre los caracteres especiales se encuentran : (separador de esquema) y / (ruta o separador de jerarquía), aquí está la lista completa de símbolos reservados de RFC-2396 :

  reserved = ";"  |  "/" |  "¿?"  |  ":" |  "@" |  "&" |  "=" |  "+" |
               "$" |  "," 

Tiene poco que ver con la seguridad, mucho más con simplemente seguir un estándar: estos símbolos significan algo especial en cualquier URI, URL o URN. Cuando necesite usarlos como parte de una ruta o una cadena de consulta (la solicitud GET crea una cadena de consulta para usted), debe escapar de ellos. La versión corta de escaping es: tomar los bytes UTF-8 como hexadecimales y precederlos con un signo % . En el caso de los caracteres reservados, ese es siempre un carácter de un solo byte en UTF-8 y por lo tanto se escapó como dos dígitos hexadecimales.

Camino a una solución

De vuelta a tu problema No mencionó qué idioma estaba usando. Pero cualquier lenguaje que funcione con Internet tiene una forma de codificar o decodificar URL. Algunos tienen funciones de ayuda para descodificar una URL completa, pero normalmente es mejor dividirla en pares de nombre / valor y luego decodificarla. Esto le dará la ruta URL absoluta que necesita.

Nota: es mejor decodificar siempre los valores de consulta, simplemente porque cuando las personas escriben un valor, no sabrán si ese valor está reservado y el navegador lo codificará por usted. No hacerlo plantea un riesgo de seguridad.

EDITAR: Cuando necesite decodificar dentro de una página, no en el lado del servidor, necesitará JavaScript para hacer el trabajo. Eche un vistazo a esta página para encontrar / decodificar URL, o use Google para encontrar muchas más.

No, no puedes. La encoding es necesaria para crear una URL válida.

En su lugar, decodifique el valor en su código de recepción (en qué plataforma está, de todos modos, la deencoding de URL generalmente se realiza automáticamente).

No por razones de seguridad no puedes hacer esto. Tienes que recolectarlo y decodificarlo en el extremo receptor.

Si utilizó XMLHttpRequest , puede enviar texto sin encoding. Puede usar JavaScript para hacer eso, pero recuerde configurar content-type como text/plain .

 content-type: text/plain 

Cuando use el método FORM y GET y algunos caracteres especiales, terminará con la encoding del navegador de la consulta resultante. Para navegadores más nuevos que admiten cambiar la dirección URL sin actualizar la página (IE10 +), es posible decodificar la cadena de consulta URL y actualizar la dirección.

Estoy usando un script como este:

   

Esto transformará http://example.com/page.html?path=foo%2Fbar en http://example.com/page.html?path=foo/bar.

Puede decodificar la url usando javascript Función: decodeURIComponent (Url); Porque el navegador codifica la URL para caracteres especiales. Por ejemplo: https://www.example.com está codificado a % 20https% 3A% 2F% 2Fwww.example.com . Aquí los caracteres especiales son reemplazados por% y su valor ASCI.