2010-02-02 13 views
7

Z powodu nieporozumienia z partnerem, z którym współpracujemy, adres URL, który wywołuje na naszym serwerze, jest pomieszany.jest ciągiem zapytania z/jest ważny?

Jest to adres URL oni powinni zadzwonić na naszym serwerze:

/AAAAAAAA/?b=CCCCCCC 

Unfotunately został zaimplementowany w systemie jak ten

?b=CCCCCCC/AAAAAAA 

mogę łatwo analizować z komponentów, ale "Martwiłem się, że parametr ciągu zapytania z/w nim nie jest prawidłowym adresem URL.

Czy adres URL jest rzeczywiście ważny - czy powinienem się nim przejmować. W jakich okolicznościach może być niekodowany/powodować problemy w ciągu zapytania.

+1

kocham jak/został przeanalizowany z adresu URL na to pytanie :-) –

Odpowiedz

2

Chociaż nigdy nie miałem problemu, są one technicznie nie wolno, jak na RFC 2396:

W ramach komponentu zapytanie, znaki ";", "/", „: "?" "," @ "," & "," = "," + ",", "i" $ "są zarezerwowane.

Ale jak powiedziałem ... Nigdy nie napotkam żadnych problemów. Myślę, że to problem ze starszymi przeglądarkami bardziej niż cokolwiek, ale może ktoś może rzucić trochę więcej światła na problem, który to powoduje?

+0

Jakbym zorientowali, że technicznie nie było dozwolone (z oczywistych powody), ale pomyślałem, że tak prawie wszystko w porządku. z tym powiedziałem, zastanawiam się, czy mogą pojawić się jakieś fajne cienie z serwerami proxy, starszymi przeglądarkami, narzędziami bezpieczeństwa itp. –

+0

@Simon - Muszę jeszcze znaleźć jakieś złe efekty, ale moje zastosowania są zazwyczaj bardzo specyficzne, np. 'Zaloguj się? Ru = Trasa/SubRoute/Kategoria/45'. –

+0

ok, miejmy nadzieję, że jesteśmy w porządku przez tydzień. dzięki - i zadziwiła mnie osoba, która faktycznie używa "/" udało mi się tak szybko znaleźć moje pytanie! –

1

Slash jest "zastrzeżoną postacią" w części kwerendy adresu URL na RFC 2396 sekcja 3.4, więc zgodnie z sekcją 2.2 musi być zakodowana. Oznacza to, że część zapytania może zawierać %2F, ale nie powinna zawierać /.

+0

, ale czy w praktyce coś się zepsuje? Chcę, aby format adresu URL został poprawiony, ale zajmie to tydzień na ich następną kompilację. –

+0

@Simon Jeśli ktoś zna odpowiedź na to pytanie, to ty. – hobbs

+0

cóż, nie łamie się dla mnie w chrome lub IE8, ale może się zepsuje dla kogoś używającego Mozaiki 1.0? dunno ;-) –

5

Zgodnie z RFC 3986: Uniform Resource Identifier (URI): Generic Syntax (od roku 2005) tak, / jest dozwolone w składniku zapytania. To jest BNF dla łańcucha zapytania (w dodatku A w RFC 3986)

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

Spec mówi: ("?")

  • Znaki slash ("/") i znak zapytania może reprezentować dane w komponencie zapytania.
  • jako składniki zapytania są często używane do przenoszenia informacji identyfikujących w postaci par "klucz = wartość", a jedna często używana wartość jest odniesieniem do innego identyfikatora URI, to jest czasami lepiej dla użyteczności, aby uniknąć kodowania procentowego znaków

Oto powiązany pytanie: Query string: Can a query string contain a URL that also contains query strings?

+0

To powinna być poprawna odpowiedź, ponieważ RFC 3986 zastępuje 2396. –