Próbuję wysłać wiadomość GET, która zawiera ciągi ze znakami ampersand i nie mogę zrozumieć, jak uciec znak ampersand w adresie URL.
Przykład:
http://www.example.com?candy_name=M&M
result => candy_name = M
Próbowałem też:
http://www.example.com?candy_name=M\&M
result => candy_name = M\\
Używam adresów URL ręcznie, więc potrzebuję tylko poprawnych znaków.
Nie mogę korzystać z żadnych bibliotek. Jak można to zrobić?
http
url
get
query-string
query-parameters
tomermes
źródło
źródło
A potentially dangerous Request.Path value was detected from the client (&).
Dotyczy to nie tylko ampersand w adresach URL, ale wszystkich znaków zastrzeżonych . Niektóre z nich obejmują:
Pomysł jest taki sam jak kodowanie
&
w dokumencie HTML, ale kontekst został zmieniony tak, aby zawierał się w URI, oprócz bycia w dokumencie HTML. Tak więc kodowanie procentowe zapobiega problemom z analizą składni w obu kontekstach.Przydaje się to bardzo często, gdy trzeba umieścić adres URL w innym adresie URL. Na przykład, jeśli chcesz opublikować status na Twitterze:
W moim tweecie jest wiele zarezerwowanych znaków, a
?'():/
więc zakodowałem całą wartośćstatus
parametru URL. Jest to również pomocne, gdy używaszmailto:
linków zawierających treść lub temat wiadomości, ponieważ musisz zakodować parametrybody
isubject
, aby zachować nienaruszone podziały wierszy, znaki ampersand itp.http://en.wikipedia.org/wiki/Percent-encoding#Percent-encoding_reserved_characters
źródło
! ' ( ) *
nie są kodowane za pomocą adresu URLencodeURIComponent
.Spróbuj użyć
http://www.example.org?candy_name=M%26M
.Zobacz także to odniesienie i więcej informacji na Wikipedii .
źródło
Możesz użyć znaku%, aby „uciec” ze znaków niedozwolonych w adresach URL. Zobacz [RFC 1738].
Tabela wartości ASCII na stronie http://www.asciitable.com/ .
Widać
&
26 w systemie szesnastkowym - więc potrzebujesz M% 26M.źródło
Może to pomóc, jeśli ktoś chce tego w PHP
źródło
Jeśli nie możesz użyć żadnych bibliotek do zakodowania wartości, http://www.urlencoder.org/ lub http://www.urlencode-urldecode.com/ lub ...
Wystarczy wpisać swoją wartość „M&M”, a nie pełny adres URL ;-)
źródło
Chciałbym dodać niewielki komentarz na temat rozwiązania Blender.
Możesz wykonać następujące czynności:
To daje:
Wspaniałą rzeczą w tym jest to, że działa nie tylko dla każdego szczególnego charakteru.
Na przykład:
Wyjścia:
źródło
Możesz raczej przekazać swoje argumenty za pomocą tej funkcji encodeURIComponent, abyś nie musiał się martwić o podanie jakichkolwiek znaków specjalnych.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent
źródło