Разрешение звездочки в URL - PullRequest
       9

Разрешение звездочки в URL

6 голосов
/ 31 декабря 2010

У меня проблема с включением звездочки (*) в URL моего сайта. Я использую ASP.NET MVC 2 и .NET 4.0.

Вот пример, описывающий проблему:

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

Имя пользователя - Nice *, и ASP.NET говорит, что в URL есть недопустимые символы:

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.

Я перепробовал все методы Web.config, которые я видел в сети, такие как:

<pages validateRequest="false">

и

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

Итак, мой вопрос: можно ли разрешить звездочку в URL? Если нет, есть ли какой-нибудь метод кодирования в .NET, который может кодировать звездочку (*)?

Спасибо!

Ответы [ 3 ]

10 голосов
/ 31 декабря 2010

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

Другие зарезервированные символы

Звездочка ("*", ASCII 2A hex) и восклицательный знак ("!", ASCII 21 hex) зарезервированы дляиспользовать как имеющие особое значение в определенных схемах.

6 голосов
/ 13 мая 2011

Звездочка (*) - это зарезервированный символ со специальным значением, поэтому его не следует неправильно использовать в URI.Вместо этого вы должны процентов кодировать каждого имени пользователя, прежде чем вставить его в URI.

При кодировании процентов символ звездочки становится "% 2A".

Таким образом, полноеправильный URI будет: http://example.com/profile/view/Nice%2A

Имя пользователя с кодировкой процентов должно автоматически переводиться обратно в исходную строку имени пользователя.

Это позволит не только проверять URI на стороне сервера., но также и на стороне клиента, когда ваши пользователи копируют и вставляют эти адреса в свои почтовые программы.

Например, переполнение стека автоматически ссылается на безопасный кодированный в процентах URI: http: // example.com/profile/view / Nice% 2A

Но он не полностью ссылается на небезопасную версию: http: // example.com/profile/?user=username*

Звездочка не включена вСсылка переполнения стека - так что ваш пользователь мог оказаться не на той странице.

(Извините, я не могу это продемонстрировать - мне разрешено включить только две ссылки в мое сообщение.)

Вы можетеУ вас много хлопот, так как вы всегда вставляете процентное значение в кодировку, прежде чем вставить ее в URI.

2 голосов
/ 31 декабря 2010

Мое решение состояло в том, чтобы изменить его на строку запроса.

например:.

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

Таким образом, кажется, что он работает просто отлично.

Я знаю, что звездочка (*) является зарезервированным символом, и поэтому я не должен позволять даже именам пользователей иметь его. Но это решает мою проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...