Я использую метод Javascript decodeURIComponent
для декодирования закодированного URL. Теперь у меня проблема: иногда URL-адрес дважды кодируется во время перенаправления между серверами, иногда он кодируется только один раз.
Я хочу проверить, если URL-адрес по-прежнему кодируется после вызова метода decodeURIComponent
. Как я могу это сделать? Любой указатель будет очень полезен для меня.
Обновление - 1
Если я рекурсивно вызываю метод и проверяю, что если данный URL-адрес по-прежнему содержит "%", если он содержит "%", то декодируйте его и снова вызовите метод; и если не вернуть его вызывающему, это сработает?
Обновление - 2
В моем случае у меня есть:
callBackUrl=http%253A%252F%252Fadbc.com%252FPOSM%252Fapp%252Fpages%252Fadf.task-flow%253Fadf.tfDoc%253D%25252FWEB-INF%25252Ftask-flows%25252Fcatalog-edit-task-flow.xml%2526adf.tfId%253Dcatalog%2526_adf.ctrl-state%253Db9akorh22_9%2526articleReference%253D10C00135%2526previousView%253Dcatalog-home%2526fromUCM%253Dtrue%2526articleType%253Dposm%2526developer%253Dcentral
Теперь я беру значение callBackUrl в свой js-метод, затем расшифровываю его и запускаю window.open()
с этим декодированным URL. параметры одинаковы, и он имеет:
- adf.tfDoc
- adf.tfId
- articleReference
- previousView
- fromUCM
- СтатьяВид статьи
- Разработчик
Параметры в него. Поэтому я знаю, что нет строки запроса, например value="%.."
.
Обновление - 3
Я написал следующий метод:
var decodeURLRecursively = function(url) {
if(url.indexOf('%') != -1) {
return decodeURLRecursively(decodeURIComponent(url));
}
return url;
}