Mi problema es el siguiente. Tengo una página de XHTML 1.1 que tiene campos de formulario y entrada. Uno de los campos de entrada contiene un valor que es un URI. Este URI contiene pares clave-valor con signo & (&) como separador de argumentos, que se pasará como una solicitud GET por otra aplicación web en el navegador.How-to XHTML 1.1 valida un ampersand sin escapar de él?
Normalmente usaría la entidad &
para crear los símbolos y validar el código como XHTML 1.1. Mi problema aquí es que la aplicación no recibe la solicitud GET, ya que (como se esperaba) el navegador no entiende cómo manejar &
en el URI.
Así que mi pregunta es realmente cómo escribir un signo de unión sin usar la entidad HTML, por lo que el navegador todavía lo reconoce como el separador de argumentos y la solicitud GET se pasa correctamente a la aplicación web.
He intentado Hex (% 26) que codifica el signo pero el navegador aún no lo "traduce" de nuevo a un carácter & adecuado.
Una cuestión relacionada, pero no proporciona la respuesta exacta a la pregunta que me pregunto:
XHTML and & (Ampersand) encoding
"(como se esperaba) que el navegador no entiende cómo manejar' '& en el URI" - es decir, no ** ** como se esperaba, no debería ver '&' en la barra de direcciones a menos que lo haya codificado doblemente. –
Por favor, vuelva a leer la pregunta. Los ampersands son parte de un URI contenido dentro del campo de valor de una entrada. Después de enviar el formulario, el usuario será devuelto a la misma ubicación, exactamente como está escrito. Esto significa que o dejo los símbolos "entrecomillados" pero fallan la validación, o los codifico con el problema de que el navegador recibirá la entidad HTML en la barra de direcciones y no pasará la cadena de consulta a la siguiente aplicación en el proceso. –
El navegador debe decodificar el '&' a '&' al convertir el HTML a un DOM. Luego debe codificar '&' como '% 26' al construir la URL o los datos codificados en forma de x-url. Si no funciona, entonces sospecho que está manejando los datos incorrectamente en el servidor. – Quentin