Если пользователь копирует URL с моего сайта, например:
www.mysite.com / # бирка / Sometagtext% 20 (Sometagtext2) | карта / somecardname / 21
и публикует его на другом веб-сайте, который на другом веб-сайте кодирует строку:
www.mysite.com / # Тег / SOMETEXT% 20% 28Sometext2% 29% 7Ccard / somecardname / 21
Когда используется этот новый URL, кодировка ExtJS
не обрабатывается должным образом, и веб-сайт не работает.
Я проверил значение тега в onBeforeTagChange
в пределах MainController.js
(см. Код) и включает карту:
sometagtext% 20% 28Sometagtext2% 29% 7Ccard / somecardname / 21
sometagtext (Sometagtext2) | карточка / somecardname / 21)
Итак, по крайней мере, кодирование разделителя нескольких маршрутов из | % 7C портит сайт, так как не может разобрать теги с карточек.
Где и как мне обновить маршрутизатор, чтобы он декодировал URL-адрес перед его разбором?
Я использую ExtJS 6.0.2.437
Вот мой код:
Ext.define('APP.view.main.MainController', {
extend: 'Ext.app.ViewController',
alias: 'controller.main',
routes: {
'card/:card/:collection_id': {
action: 'cardChange',
before: 'beforeCardChange',
conditions: {
':collection_id': '([0-9]+)'
}
},
'card/:card': {
action: 'cardChange',
before: 'beforeCardChangeBase'
},
'tag/:tag': {
action: 'onTagChange',
before: 'onBeforeTagChange',
conditions: {
':tag': '([%a-zA-Z0-9\.\\-\\_\\s,\(\)\/]+)'
}
}
},
onTagChange: function (tag) {
},
onBeforeTagChange: function (tag, action) {
console.log(tag);
tag = decodeURI(tag);
console.log(tag);
},
/* ...
...
...
*/
});