PDA

View Full Version : Apache , è un bug?


kingv
15-03-2006, 09:09
Ciao a tutti.

Se richiamo apache con una url del tipo:

http://nomeserver/pagina.html;chiave=valore?chiave2=valore2

che dovrebbe essere una sintassi legale ( http://www.faqs.org/rfcs/rfc1738.html ) ottengo un errore 404 (File not found).

riporto qui il pezzo di grammatica significativa:

; HTTP
httpurl = "http://" hostport [ "/" hpath [ "?" search ]]
hpath = hsegment *[ "/" hsegment ]
hsegment = *[ uchar | ";" | ":" | "@" | "&" | "=" ]
search = *[ uchar | ";" | ":" | "@" | "&" | "=" ]

sbaglio io a interpretare o sbaglia lui?

PhantomX
15-03-2006, 09:21
ma se utilizzi semplicemente

"http://nomeserver/pagina.html?chiave1=valore1&&chiave2=valore2"

funziona?

kingv
15-03-2006, 09:29
funziona?


sì funziona.
a me però interessa sapere se l'altra sintassi è legale o meno.

Angus
15-03-2006, 14:25
Ciao a tutti.

Se richiamo apache con una url del tipo:

http://nomeserver/pagina.html;chiave=valore?chiave2=valore2

che dovrebbe essere una sintassi legale ( http://www.faqs.org/rfcs/rfc1738.html ) ottengo un errore 404 (File not found).

riporto qui il pezzo di grammatica significativa:

; HTTP
httpurl = "http://" hostport [ "/" hpath [ "?" search ]]
hpath = hsegment *[ "/" hsegment ]
hsegment = *[ uchar | ";" | ":" | "@" | "&" | "=" ]
search = *[ uchar | ";" | ":" | "@" | "&" | "=" ]

sbaglio io a interpretare o sbaglia lui?

E' giusto che la definizione di 'hsegment' coincida con quella di 'search'? Mah!
Comunque darei uno sguardo anche alla RFC2396...

FedeX_65246X
15-03-2006, 18:09
; HTTP
httpurl = "http://" hostport [ "/" hpath [ "?" search ]]
hpath = hsegment *[ "/" hsegment ]
hsegment = *[ uchar | ";" | ":" | "@" | "&" | "=" ]
search = *[ uchar | ";" | ":" | "@" | "&" | "=" ]
hostport = host [ ":" port ]



http://nomeserver/pagina.html;chiave=valore?chiave2=valore2


E' una produzione corretta se consideri pagina.html;chiave=valore come un hpath, in questo caso però immagino sia una sintassi legale ma non valida per Apache (che potrebbe porre ulteriori vincoli, mi sembra un po' troppo permissiva come grammatica).

Più ragionevolmente se consideri solo pagina.html come hpath, non è corretto in quanto dopo un hpath puoi trovare solo i caratteri '?' e '/'.

kingv
15-03-2006, 18:28
E' una produzione corretta se consideri pagina.html;chiave=valore come un hpath, in questo caso però immagino sia una sintassi legale ma non valida per Apache (che potrebbe porre ulteriori vincoli, mi sembra un po' troppo permissiva come grammatica).

Più ragionevolmente se consideri solo pagina.html come hpath, non è corretto in quanto dopo un hpath puoi trovare solo i caratteri '?' e '/'.


io in effetti l'avevo considerata come nel primo caso, lo so che non è molto ragionevole ma dato che sono le regole di una grammatica in teoria non dovrebbero essere interpretabili.
ho fatto una prova anche usando il listener http di tomcat e questo invece sembra accettare senza problemi la sintassi.

kingv
15-03-2006, 18:29
E' giusto che la definizione di 'hsegment' coincida con quella di 'search'? Mah!

ho fatto cut&paste dal testo dell'rfc :boh:

Angus
15-03-2006, 18:43
ho fatto cut&paste dal testo dell'rfc :boh:

Sì infatti non mettevo in dubbio te ma proprio l'rfc e infatti sono andato alla ricerca di una rfc più 'moderna', che ti ho segnalato. Leggendola non ho trovato differenze nella grammatica da te riportata che, per rispondere esplicitamente alla tua domanda, interpreti correttamente ma sinceramente mi sfugge il significato tecnico dell'attributo 'opaque' usato per i path siffatti (cioè che contengano uno o più ';'). Però non so dirti a priori se sia un bug di Apache oppure una caratteristica dello stesso.

kingv
15-03-2006, 21:26
Sì infatti non mettevo in dubbio te ma proprio l'rfc e infatti sono andato alla ricerca di una rfc più 'moderna', che ti ho segnalato. Leggendola non ho trovato differenze nella grammatica da te riportata che, per rispondere esplicitamente alla tua domanda, interpreti correttamente ma sinceramente mi sfugge il significato tecnico dell'attributo 'opaque' usato per i path siffatti (cioè che contengano uno o più ';'). Però non so dirti a priori se sia un bug di Apache oppure una caratteristica dello stesso.


grazie, ora leggo anch'io quel testo.
quello che mi sorprende è che apache se richiamato con una url come :
http://nomeserver/pagina.html;chiave=valore
cerchi effettivamente un file dal nome "pagina.html;chiave=valore", mentre mi sarei aspettato che lo facesse se il carattere ";" fosse stato espresso tramite escape ("%3B").
dalle prove che ho fatto ignora totalmente che sia un carattere riservato.