Процент «%», интерпретируемый маршрутизатором AngularJS - PullRequest
0 голосов
/ 29 августа 2018

В моем приложении AngularJS есть следующий маршрут

var accountactivation = {
    name: 'accountactivation',
    url: '/activate/:code',
    templateUrl: 'views/account/activation.html',
    controller: 'AccountActivationController',
    authenticate: false
};

добавлено вот так в роутер

$stateProvider.state(accountactivation)

Это система активации учетной записи, где :code - это код активации. Этот код имеет URL-кодировку.

Проблема : иногда :code содержит % символ. Затем навигатор перенаправляется на страницу входа вместо отображения страницы активации учетной записи.

Пример маршрутов

  • http://localhost:9000/#!/activate/c43q6zb2 работает правильно
  • http://localhost:9000/#!/activate/c43q6zb2% перенаправляется для входа в систему (иногда приводит к пустой странице)
  • http://localhost:9000/#!/activate/c43q6zb2Fxb%2FxQkjc2qnjc39QEYTQtpVmgWbw2gzNII0z8QRFrRhz%2FNC4LxzqBIYw5tqM9NaY8ejTxIRXQCfTh8hFszyARL%2Ff9MoOp2MvzNulqefVczsuGpZA8RZArQk тоже не работает

Можно ли разрешить маршрутам angularjs иметь параметры, содержащие знаки prcentages?

Как я кодирую свой ключ активации : Для информации, я использую java URLEncoder с кодировкой кодировки UTF-8

Спасибо за вашу помощь:)

1 Ответ

0 голосов
/ 29 августа 2018

https://en.wikipedia.org/wiki/Percent-encoding

Поскольку символ процента (%) служит индикатором для октетов, закодированных в процентах, он должен быть закодирован в процентах как% 25 для того октета, который будет использоваться в качестве данных в URI.

Так что, похоже, ваш URI недействителен только с%. Вы должны закодировать это правильно. Либо используйте %25, чтобы он расшифровывался как%, либо удалите его ...

...