Jak zakodować kropki dla adresów URL w JavaScript?
Poniższy wpis SO jest wyczerpujący, ale wszystkie trzy opisane metody nie są kodowane dla okresów.
Wiadomość:
zakodować adres URL w JavaScript?
https://coderoad.ru/332872/
Na przykład, jeśli uruchomię trzy metody (np. Escape, encodeURI, encodeURIComponent) żadna z nich nie zakoduje okresów.
Tak więc „food.store” pojawia się jako „food.store”, co powoduje uszkodzenie adresu URL. Łamie adres URL, ponieważ aplikacja Railsów nie może rozpoznać adresu URL jako prawidłowego i wyświetla stronę błędu 404. Czy jest to błąd konfiguracji w pliku tras Railsów?
Jaki jest najlepszy sposób kodowania kropek przy użyciu JavaScript dla adresów URL?
Nie znaleziono powiązanych wyników
Zaproszony:
Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się
8 odpowiedzi
Anonimowy użytkownik
Potwierdzenie od:
http://myserver.com/app/servlet/test.string
http://myserver.com/app/servlet/test.string
W tym przypadku biblioteka Spring, której używam, przekazywała mi tylko część „testową” tego ciągu w odpowiednim parametrze metody z adnotacjami mojej klasy kontrolera, prawdopodobnie dlatego, że potraktowała „.string” jako rozszerzenie pliku i usunęła go. Być może jest to ten sam podstawowy problem, co pierwotny problem powyżej?
W każdym razie udało mi się to obejść, po prostu dodając końcowy ukośnik do adresu URL. Po prostu wrzucam to tam na wypadek, gdyby ktoś tego potrzebował.
Jan
Anonimowy użytkownik
Potwierdzenie od:
Możesz kodować dane base64, ale nie wierzę, że istnieje natywny sposób na zrobienie tego w js. Możesz również zamienić wszystkie kropki na ich odpowiedniki w ASCII (% 2E) zarówno po stronie klienta, jak i serwera.
Zasadniczo zwykle nie ma potrzeby kodowania „.”, Więc jeśli chcesz to zrobić, będziesz musiał znaleźć własne rozwiązanie. Możesz także przeprowadzić dalsze testy, aby sprawdzić, czy „.” Naprawdę psuje adres URL.
NTN
Anonimowy użytkownik
Potwierdzenie od:
Ponieważ nie chciałem zmieniać tego, co robi .htaccess, użyłem tego, aby to naprawić:
robi to wszystkie standardowe kodowanie, a następnie zastępuje. używając tam ascii równoważnego% 2E. PHP jest automatycznie konwertowane z powrotem. w wartości $ _REQUEST, ale .htaccess nie widzi tego jako kropki, więc wszystko jest w porządku.
Anonimowy użytkownik
Potwierdzenie od:
Tutaj
http://tools.ietf.org/html/rfc3986#page-11
RFC, na które warto zwrócić uwagę.
Jeśli kropka jest czymś w rodzaju „zerwania”, Twój serwer może wykonywać własną interpretację adresu URL, co jest w porządku, ale oznacza to, że musisz wymyślić jakiś niestandardowy schemat kodowania, gdy własne metaznaki muszą zostać zmienione. ..
Anonimowy użytkownik
Potwierdzenie od:
W moim przypadku adres URL został wygenerowany za pomocą javascript. Kropki są używane do oddzielania wartości w adresie URL (
sling selectors
http://sling.apache.org/docume ... n.html), więc sami selekcjonerzy nie mogli mieć kropek.
Moim rozwiązaniem było zastąpienie wszystkich kropek jednostką HTML, jak pokazano na
Postać: jeden
:
Rysunek 1: Rozwiązanie
Anonimowy użytkownik
Potwierdzenie od:
Anonimowy użytkownik
Potwierdzenie od:
Anonimowy użytkownik
Potwierdzenie od:
Rails REST routingu: punkty w elemencie zasobów ID
https://coderoad.ru/5222760/
wyjaśnienie (i przewodnik routingu w Railsach, sekcja 3.2)