2010-02-02 9 views
7

Debido a una falta de comunicación con un socio afiliado, estamos trabajando con la URL que llaman en nuestro servidor se ha mezclado.es una cadena de consulta con a/in it valid?

Esta es la URL que se supone que llamar en nuestro servidor:

/AAAAAAAA/?b=CCCCCCC 

unfotunately que se implementó en su sistema como este

?b=CCCCCCC/AAAAAAA 

puedo analizar fácilmente los componentes, pero Me preocupa que un parámetro de cadena de consulta con/in it no sea en realidad una URL válida.

Es una/en una URL realmente válida, o debería preocuparme. En qué circunstancias puede unencoded/causar problemas en una cadena de consulta.

+1

Me encanta cómo el/consiguió analiza fuera de la dirección de esta pregunta :-) –

Respuesta

2

Aunque nunca he tenido un problema, que no está permitido técnicamente como por RFC 2396:

Dentro de un componente de consulta, los caracteres ";", "/", ": "?" "," @ "," & "," = "," + ",", "y" $ "están reservados.

Pero como dije ... nunca me he encontrado con ningún problema. Creo que es un problema con los navegadores más antiguos más que nada, pero tal vez alguien puede arrojar algo más de luz sobre un problema que esto provoca.

+0

i imaginé algo que técnicamente no estaba permitido (por obvias razones) pero hubiera pensado que sería más o menos estar bien. Dicho esto, me pregunto si podría ocurrir algún funky thin con proxies, navegadores antiguos, herramientas de seguridad, etc. –

+0

@Simon: todavía no he encontrado ningún efecto perjudicial, pero el uso que hago de ellos suele ser muy específico, p. 'Login? Ru = Ruta/SubRuta/Categoría/45'. –

+0

ok así que espero que estamos bien por una semana. gracias - y sorprendió a alguien que está usando '/' logró encontrar mi pregunta tan rápido! –

1

La barra es un "carácter reservado" en la parte de consulta de una URL por RFC 2396 sección 3.4, por lo que de acuerdo con la sección 2.2 debe codificarse. Es decir, una parte de consulta puede contener %2F pero no debe contener /.

+0

pero en la práctica, ¿algo realmente va a romperse? Quiero que se solucione el formato de la URL, pero demorará una semana en su próxima compilación. –

+0

@Simon. Si alguien conoce la respuesta a esa pregunta, es usted. – hobbs

+0

Bueno, no se rompe para mí en Chrome o IE8, pero tal vez se rompe para alguien que usa Mosaic 1.0? No sé ;-) –

5

Según RFC 3986: Uniform Resource Identifier (URI): Generic Syntax (desde el año 2005), sí, / está permitido en el componente de consulta. Este es el BNF para la cadena de consulta: (en el Apéndice A en RFC 3986)

query   = *(pchar/"/"/"?") 
pchar   = unreserved/pct-encoded/sub-delims/":"/"@" 

La especificación dice: ("?")

  • Los caracteres de barra ("/") y signo de interrogación puede representar datos dentro del componente de consulta.
  • como los componentes de consulta se utilizan a menudo para llevar información de identificación en forma de pares "clave = valor" y un valor utilizado frecuentemente es una referencia a otro URI, es a veces mejor para facilidad de uso para evitar el porcentaje de codificación personajes

Aquí es una pregunta relacionada: Query string: Can a query string contain a URL that also contains query strings?

+0

Esta debería ser la respuesta correcta, porque RFC 3986 es el reemplazo de 2396. –

Cuestiones relacionadas