我正在使用 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
现在我在我的 js 方法中获取 callBackUrl 的值,然后对其进行解码并window.open()
使用解码后的 URL 触发。参数是相同的,它有:
- adf.tfDoc
- adf.tfId
- 文章参考
- 以前查看
- 来自UCM
- 文章类型
- 开发商
参数进去。所以我知道没有像value="%.."
.
更新 - 3
我写了以下方法:
var decodeURLRecursively = function(url) {
if(url.indexOf('%') != -1) {
return decodeURLRecursively(decodeURIComponent(url));
}
return url;
}