AngularJS - $ http запрашивает выдачу специальных символов - PullRequest
0 голосов
/ 22 мая 2019

Надеюсь, вы в порядке, ребята.Я пытаюсь использовать API, написанный моим коллегой, с использованием AngularJS $ http.Это тип метода PATCH.Один из параметров передается в URL (SomeMethod / User / FHD & TE), а другой в теле (JSON).Тот, что в теле, очевидно, в порядке, но есть проблема с тем, который передается в URL, из-за того, что время от времени появляются какие-то специальные символы.Код ответа API равен 400, и он говорит «потенциально опасное значение Request.Path было обнаружено от клиента».Я пытался использовать escape и кодировать функции JS, но ни одна из них не работала.Более того, в angular.http есть опция params, которую я использую для выполнения запросов.Насколько я знаю, он заботится о кодировании параметров (решает проблему специальных символов), но я не могу его использовать, потому что URL будет отличаться от того, который ожидает API.Это будет «SomeMethod / User? FHDTE%» вместо «SomeMethod / User / FHD & TE» и, очевидно, ответит 404. Теперь, если это можно решить на стороне клиента, и если да, то как я могу это сделать?Или нужно обновление бэкэнда?

Пример запроса:

return $http({
                method: 'PATCH',
                url: ...SomeMethod/User/firstURLParameter,
                headers: { 'Content-Type': 'application/json' },
                data: { "secondBodyParameter": true }
            });

1 Ответ

0 голосов
/ 22 мая 2019

Если на стороне сервера написано в Nodejs, попробуйте использовать функцию unescape для полученных параметров.

var str = Need%20tips%3F%20Visit%20W3Schools%21; var str_1 = unescape(str)

, где результатом str1 будет «Нужны советы? Посетите W3Schools!»

Примеры из w3schools https://www.w3schools.com/jsref/jsref_unescape.asp

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