Почему Asp.Net Core QueryHelpers не кодирует символ @ (at)? - PullRequest
0 голосов
/ 14 марта 2019

Читая различные ресурсы в Интернете, кажется, что мы должны закодировать @ в параметрах запроса URL (а также в большинстве других мест URL).

Я пытался создать URL в моем приложении ASP.NET Core и нашел способ сделать это, используя QueryHelpers.AddQueryString(...).Но, похоже, он не кодирует символ @, хотя он и кодирует все остальные символы, которые я тестировал.

Вопрос: Есть ли какая-то конкретная причина для такого поведения или это так?просто ошибка?

Мой тест, который проходит:

var url0 = QueryHelpers.AddQueryString("base", "field", "&?=čž/");
Assert.Equal("base?field=%26%3F%3D%C4%8D%C5%BE%2F", url0);

var url = QueryHelpers.AddQueryString("base", "field", "@");
Assert.Equal("base?field=@", url);

1 Ответ

0 голосов
/ 14 марта 2019

Это потому, что просто @ не нужно для кодирования . Это не символ, который означает что-либо в контексте URL, так что все в порядке. Символы, такие как &, ? и =, все имеют значение в контексте URL и, следовательно, должны быть закодированы. Что касается символов Юникода, я считаю, что они закодированы просто для безопасности. Юникод технически поддерживается в URL-адресах, но поддержка для этого является относительно недавней и может быть не реализована повсеместно. не повредит их кодировать, и таким образом это будет работать без проблем.

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