2016-04-06 15 views
1

ich einen String-Wert in einer URL übergeben zB: http://localhost:8080/webservice/useradmin/a%bghijlk123/0978+ghEncoding Parameter als URL übergeben - Alternative Optionen?

Der String "ab% ghijlk123/0978 + gh" bricht die URL. Was sind die verfügbaren Optionen, um dies zu überwinden. Ist die Codierung der Zeichenfolge die einzige Option? Es muss minimale Codeänderung geben. Irgendwelche serverseitigen Konfigurationen können verwendet werden, um dies zu erreichen? Bitte geben Sie bitte Vorschläge.

+0

Wie kommen Sie mit der Saite auf dem ersten Platz nach oben (was ist der Klartext und Kodierungsverfahren)? Können Sie den Code teilen, den Sie bisher versucht haben? –

+0

dieser String ist zufällig generiert ..... verwendet Base64 Encoding-Schema .. ich brauche andere Optionen als Codierung – NimmyKrish

+0

Ich denke, Sie sollten Schrägstriche in Ihrer generierten Zeichenfolge entfernen. Weil/ist für Pfade in URLs reserviert. Sie alphanumerische verwenden können, plus $ -_. +! * '(), –

Antwort

1

Encodieren die Zeichenfolge die einzige Option?

Es ist die einzige richtige Option.

Verwenden URLEncoder.encode("ab%ghijlk123/0978+gh", "UTF-8"),
, die Sie ab%25ghijlk123%2F0978%2Bgh, für eine vollständige URL geben:

http://localhost:8080/webservice/useradmin/ab%25ghijlk123%2F0978%2Bgh 

Die URL http://localhost:8080/webservice/useradmin/a%bghijlk123/0978+gh ist ungültig.

Die URL-Spezifikation (RFC3986) besagt, dass Wegsegmente (die durch ein / getrennten Werte) nur bestehen:

ALPHA:   "a"-"z", "A"-"Z" 
DIGIT:   "0"-"9" 
Special chars: - . _ ~ ! $ & ' () * + , ; = : @ 
pct-encoded:  "%" HEXDIG HEXDIG 

Werte, die nicht zugelassen werden, weil sie andere Bedeutungen haben, sind: / (path Abscheider), ? (Beginn der Abfrage), # (Beginn des-Fragment), und % (Beginn des 2-digit hex codierten char).

Wie Sie sehen können, ist das %-Zeichen nur als prozentcodiertes Zeichen zulässig, sodass %bg die URL ungültig macht.

Wenn der Teil nach dem useradmin/ soll der Wertab%ghijlk123/0978+gh sein, dann ist es muss codiert werden, wie oben gezeigt.

Wenn der Server lehnt das als "400: Bad Request", dann wird der Server fehlerhaft ist.

+0

habe ich versucht, das gleiche URLEncoder ... das Ding ist Symbol% ​​nicht ist in URL..im bekommen 400 akzeptiert zu werden: wenn ich die URL Bad Anfrage verwenden 'http: // localhost: 8080/webservice/useradmin/ab% 25ghijlk123% 2F0978% 2Bgh' ... wenn ich das Symbol% ​​entfernen, wird die Anfrage erreicht den Server erfolgreich – NimmyKrish

Verwandte Themen