2010-02-02 11 views
7

A causa di una comunicazione errata con un partner affiliato stiamo lavorando con l'URL che chiamano sul nostro server è stato confuso.è una stringa di query con un/in esso valido?

Questo è l'URL che si suppone di chiamare sul nostro server:

/AAAAAAAA/?b=CCCCCCC 

sfortunatamente è stato implementato nel loro sistema come questo

?b=CCCCCCC/AAAAAAA 

posso facilmente analizzare le componenti, ma io Sono preoccupato che un parametro stringa di query con/in esso non sia effettivamente un URL valido.

Un/in un URL effettivamente valido - o dovrei essere preoccupato. In quali circostanze possono verificarsi problemi non codificati/causa in una stringa di query.

+1

Mi piace come l'/ ottenuto analizzata fuori l'URL per questa domanda :-) –

risposta

2

Anche se non ho mai avuto un problema, non sono tecnicamente consentita secondo RFC 2396:

All'interno di un componente di query, i caratteri ";", "/", ": "?" "," @ "," & "," = "," + ",", "e" $ "sono riservati.

Ma come ho detto ... non ho mai avuto problemi. Penso che sia più un problema con i browser più vecchi, ma forse qualcuno può far luce su un problema che questo causa?

+0

I kinda pensato che tecnicamente non era permesso (per ovvie ragioni) ma avrei pensato che sarebbe praticamente va bene Detto questo, mi chiedo se alcuni problemi funky potrebbero verificarsi con proxy, browser più vecchi, strumenti di sicurezza ecc. –

+0

@Simon - Devo ancora trovare effetti negativi, ma i miei usi di solito sono molto specifici, ad es. 'Accesso? Ru = percorso/sottopercorso/Categoria/45'. –

+0

ok quindi spero che stiamo bene per una settimana. grazie - e stupito che qualcuno che sta effettivamente usando "/" sia riuscito a trovare la mia domanda così velocemente! –

1

Barra è un "carattere riservato" nella parte di query di un URL per RFC 2396 sezione 3.4, quindi in base alla sezione 2.2 deve essere codificato. Cioè, una parte della query può contenere %2F ma non deve contenere /.

+0

ma in pratica qualcosa si spezzerà davvero? Voglio ottenere il formato URL corretto, ma ci vorrà una settimana per la prossima build –

+0

@Simon Se qualcuno conosce la risposta a questa domanda sei tu. – hobbs

+0

beh non mi rompe in Chrome o IE8, ma forse si rompe per qualcuno che usa Mosaic 1.0? non so ;-) –

5

In base a RFC 3986: Uniform Resource Identifier (URI): Generic Syntax (anno 2005), sì, / è consentito nel componente di query. Questo è il BNF per la stringa di query: (nell'Appendice A in RFC 3986)

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

le specifiche dice: ("?")

  • I caratteri slash ("/") e il punto interrogativo può rappresentare dati all'interno del componente di query.
  • come componenti di query vengono spesso utilizzati per portare informazioni identificative sotto forma di coppie "chiave = valore" e un valore utilizzato frequentemente è un riferimento a un altro URI, è a volte migliore per l'usabilità di evitare la codifica percentuale personaggi

Ecco una questione connessa: Query string: Can a query string contain a URL that also contains query strings?

+0

Questa dovrebbe essere la risposta corretta, perché RFC 3986 è la sostituzione per 2396. –

Problemi correlati