6 Stimmen

Sternchen in der URL zulassen

Ich habe ein Problem mit der Zulassung von Sternchen (*) in der URL meiner Website. Ich verwende ASP.NET MVC 2 und .NET 4.0.

Hier ist ein Beispiel, das das Problem beschreibt:

http://mysite.com/profile/view/Nice *

Der Benutzername ist Nice* und ASP.NET sagt, dass die URL unzulässige Zeichen enthält:

Illegal characters in path.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.ArgumentException: Illegal characters in path.

Ich habe alle Web.config-Methoden ausprobiert, die ich online gesehen habe, z. B:

<pages validateRequest="false">

und

<httpRuntime requestPathInvalidCharacters="" requestValidationMode="2.0" />

Meine Frage lautet also: Ist es möglich, ein Sternchen in der URL zuzulassen? Wenn nicht, gibt es eine Kodierungsmethode in .NET, die Sternchen (*) kodieren kann?

Danke!

11voto

turtlepick Punkte 2641

http://www.w3.org/Addressing/URL/4_URI_Recommentations.html

Andere reservierte Zeichen

Das Sternchen ("*", ASCII 2A hex) und excla sind reserviert für die Verwendung mit besonderer Bedeutung innerhalb bestimmter Schemata reserviert.

6voto

user752655 Punkte 61

Das Sternchen (*) ist ein reserviertes Zeichen mit besonderer Bedeutung und sollte daher nicht fälschlicherweise in URIs verwendet werden. Stattdessen sollten Sie Prozent kodieren jeden Benutzernamen, bevor Sie ihn in den URI einfügen.

Bei der Prozentkodierung wird aus dem Sternchenzeichen "%2A".

Der vollständige, korrekte URI würde also lauten: http://example.com/profile/view/Nice%2A

Die prozentuale Kodierung des Benutzernamens sollte automatisch in die ursprüngliche Zeichenfolge des Benutzernamens zurückübersetzt werden.

Dies ermöglicht nicht nur die serverseitige Validierung Ihrer URI, sondern auch die clientseitige Validierung, wenn Ihre Benutzer diese Adressen kopieren und in ihre E-Mail-Programme einfügen.

Stack Overflow zum Beispiel verlinkt automatisch den sicheren, in Prozent kodierten URI: http:// example.com/profile/view/Nice%2A

Allerdings wird die unsichere Version nicht vollständig verlinkt: http:// example.com/profile/?user=username*

Das Sternchen ist im Stack Overflow-Link nicht enthalten - Ihr Benutzer wäre also auf der falschen Seite gelandet.

(Tut mir leid, dass ich das nicht demonstrieren kann - ich darf nur zwei Links in meinem Beitrag einfügen).

Sie können sich eine Menge Ärger ersparen, wenn Sie die Daten immer prozentual kodieren, bevor Sie sie in einen URI einfügen.

5voto

Jón Trausti Arason Punkte 4197

Meine Lösung bestand darin, sie in eine Abfragezeichenfolge zu ändern.

Z.B.:

http://mysite.com/profile/?user=username *

Auf diese Weise scheint es gut zu funktionieren.

Ich weiß, dass das Sternchen (*) ein reserviertes Zeichen ist und ich es daher nicht einmal in Benutzernamen zulassen sollte. Aber damit ist mein Problem gelöst.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X