Wie kann ich den Browser von url-encoding Formularwerte auf GET stoppen

8

Ich habe ein Formular mit method="get" . In dem Formular muss ich die URL einer CSS-Datei übergeben, aber es wird in http%3A%2F%2Fwww... etc.

kodiert

Gibt es eine Möglichkeit, die Codierung der URL zu stoppen, da sie die Datei beschädigt.

Danke

    
kristina 01.06.2010, 11:04
quelle

6 Antworten

10

Hintergrund

Es ist ein bisschen subtiler, als man auf den ersten Blick denken könnte. Für jede URL, bei der es sich um eine bestimmte Form des URI-Standards handelt, sind bestimmte Zeichen besonders. Unter den Sonderzeichen sind : (Schematrennzeichen) und / (Pfad- oder Hierarchietrennzeichen), hier ist die vollständige Liste der reservierten Symbole von RFC-2396 :

%Vor%

Es hat wenig mit Sicherheit zu tun, viel mehr mit einem einfachen Standard: Diese Symbole bedeuten etwas Besonderes in jeder URI, URL oder URN. Wenn Sie sie als Teil eines Pfads oder eines Querystrings verwenden müssen (die GET-Anforderung erstellt eine Abfragezeichenfolge für Sie), müssen Sie sie umgehen. Die Kurzversion von Escape ist: nimm die UTF-8-Bytes als Hexadezimalzeichen und setze ihnen ein % -Zeichen voran. Im Falle der reservierten Zeichen ist das immer ein Ein-Byte-Zeichen in UTF-8 und daher als zwei Hexadezimalziffern ausgeblendet.

Pfad zu einer Lösung

Zurück zu Ihrem Problem. Du hast nicht erwähnt, welche Sprache du benutzt hast. Aber jede Sprache, die mit dem Internet funktioniert, kann URLs verschlüsseln oder entschlüsseln. Einige haben Hilfsfunktionen, um eine ganze URL zu dekodieren, aber normalerweise ist es besser, sie in ein Name / Wert-Paar aufzuteilen und dann zu dekodieren. Dadurch erhalten Sie den absoluten URL-Pfad, den Sie benötigen.

Hinweis: Es ist am besten, immer Query-Werte zu dekodieren, weil Leute, die einen Wert eingeben, nicht wissen, ob dieser Wert reserviert ist, und der Browser wird es für Sie kodieren. Wenn Sie dies nicht tun, besteht ein Sicherheitsrisiko.

BEARBEITEN: Wenn Sie innerhalb einer Seite dekodieren müssen, nicht auf der Serverseite, benötigen Sie JavaScript, um die Aufgabe zu erledigen. Sehen Sie sich diese Seite an, um URLs zu dekodieren oder Google zu verwenden, um viele andere zu finden.

    
Abel 01.06.2010 11:33
quelle
4

Nein, das kannst du nicht. Die Codierung ist erforderlich, um eine gültige URL zu erstellen.

Entschlüsseln Sie stattdessen den Wert in Ihrem Empfangscode (auf welcher Plattform Sie sich befinden, die URL-Dekodierung wird normalerweise automatisch für Sie durchgeführt)

    
Matti Virkkunen 01.06.2010 11:07
quelle
2

Nein, aus Sicherheitsgründen können Sie das nicht tun. Sie müssen es auf der Empfängerseite sammeln und dekodieren.

    
Salil 01.06.2010 11:08
quelle
0

Wenn Sie XMLHttpRequest verwendet haben, können Sie Text ohne Codierung senden. Sie können dazu JavaScript verwenden, aber denken Sie daran, content-type auf text/plain zu setzen.

%Vor%     
Yasser Gersy 29.08.2016 10:47
quelle
0

Wenn Sie die FORM- und GET-Methode und einige spezielle Zeichen verwenden, erhalten Sie am Ende die Encodierung der resultierenden Abfrage durch den Browser. Für neuere Browser, die das Ändern der URL-Adresse ohne Aktualisierung der Seite (IE10 +) unterstützen, ist es möglich, die URL-Abfragezeichenfolge zu dekodieren und die Adresse zu aktualisieren.

Ich benutze ein Skript wie folgt:

%Vor%

Dies verwandelt eine Ссылка zurück zu Ссылка

    
eliz82 26.10.2016 07:46
quelle
0

Sie können die URL mit JavaScript dekodieren Funktion: decodeURIComponent (Url); Weil Browser die URL für Sonderzeichen codiert. Beispiel: Ссылка ist in % 20https% 3A% 2F% 2Fwww.example.com codiert. Hier werden die Sonderzeichen durch% und ihren ASCI-Wert ersetzt.

    
Harshal Khatri 21.01.2018 06:59
quelle