ошибка, когда ресурс url содержит амперсанд
У нас есть веб-api со следующим URL-адресом ресурса.
http://www.example.com/book/bookid/name/bookname
теперь есть несколько книг, которые содержат имена с амперсандом '&', и когда для таких имен делается запрос, мы получаем ниже ошибки
Используемый URL:
http://www.example.com/book/123/name/ban&ban
Ошибка: потенциально опасное значение Request.Path было обнаружено у клиента (&)
Мы попытались передать или использовать закодированное значение для & ie% 26 и получить такую же ошибку.
Используемый URL:
http://www.example.com/book/123/name/ban%26ban
Ошибка: потенциально опасное значение Request.Path было обнаружено у клиента (&)
Теперь, когда я добавил свойство requestPathInvalidCharacters = "" в файле web.config в элементе httpruntime, он начал нормально работать для обоих вышеуказанных URL-адресов. Но, когда я читаю разные статьи, говорится, что использовать свойство requestPathInvalidCharacters = "" не является хорошей практикой.
Кроме того, поскольку в производстве есть много имен книг с "&" и разными специальными символами, мы не можем избежать отправки "&" амперсандов для имен книг, есть ли хороший способ справиться с этим?
Ответы
Ответ 1
Вы должны выбрать использование параметра вместо пути в своем запросе. Например: http://www.example.com/book/bookid?name=Fizz&bookname=Buzz
Вот несколько объяснений, почему возникает это исключение: http://www.hanselman.com/blog/ExperimentsInWackinessAllowingPercentsAnglebracketsAndOtherNaughtyThingsInTheASPNETIISRequestURL.aspx