http - curl save cookie
¿Es válida una URL con// en la sección de ruta? (1)
Tengo una pregunta con respecto a las URL:
He leído el RFC 3986 y todavía tengo una pregunta sobre una URL:
Si un URI contiene un componente de autoridad, entonces el componente de ruta
debe estar vacío o comenzar con un carácter de barra diagonal ("/"). Si un URI no contiene un componente de autoridad, entonces la ruta no puede comenzar
con dos caracteres de barra ("//"). Además, una referencia de URI
(Sección 4.1) puede ser una referencia de ruta relativa, en cuyo caso el
el primer segmento de ruta no puede contener un carácter de dos puntos (":"). El ABNF
requiere cinco reglas separadas para eliminar la ambigüedad de estos casos, solo uno de los cuales coincidirá con la subcadena de ruta dentro de una referencia de URI determinada. Usamos el término genérico "componente de ruta" para describir la subcadena de URI
emparejado por el analizador a una de estas reglas.
Sé que //server.com:80/path/info
es válido (es una URL relativa al esquema)
También sé que http://server.com:80/path//info
es válido.
Pero no estoy seguro de si el siguiente es válido:
http://server.com:80//path/info
El problema detrás de mi pregunta es que una cookie no se envía a http://server.com:80//path/info
, cuando es creada por el URI http://server.com:80/path/info
con restricción a /path
Ver url con múltiples barras diagonales, ¿rompe algo? , ¿Hay alguna desventaja en el uso de barras diagonales dobles en las URL? , ¿Qué significa la doble barra en las URL? y RFC 3986 - Identificador Uniforme de Recursos (URI): Sintaxis Genérica .
Consenso: los navegadores realizarán la solicitud tal como están, no alterarán la solicitud. El /
carácter es el separador de ruta, pero como segmentos de ruta se definen como:
path-abempty = *( "/" segment )
segment = *pchar
Significa que la barra después de http://example.com/
puede ir seguida de otra barra inclinada, ad infinitum. Los servidores pueden ignorarlo, pero los navegadores no lo hacen, como habrás descubierto.
La frase:
Si un URI no contiene un componente de autoridad, entonces la ruta no puede comenzar con dos caracteres de barra ("//").
Permite las URL relativas al protocolo , pero especifica que en ese caso no puede haber ninguna autoridad ( server.com:80
en su ejemplo).
Entonces: sí, es válido, no, no lo use.