View Full Version : Apache , è un bug?
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?
funziona?
sì funziona.
a me però interessa sapere se l'altra sintassi è legale o meno.
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 '/'.
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.
E' giusto che la definizione di 'hsegment' coincida con quella di 'search'? Mah!
ho fatto cut&paste dal testo dell'rfc :boh:
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.
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.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.