【发布时间】:2013-07-08 00:57:57
【问题描述】:
我正在使用 Javascript 方法 decodeURIComponent 来解码编码的 URL。现在我遇到了一个问题,有时在服务器之间的重定向期间 URL 会被编码两次,有时它只被编码一次。
我想检查在调用decodeURIComponent 方法后 URL 是否仍然被编码。我怎样才能做到这一点?任何指针都会对我很有帮助。
更新 - 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 的值,然后对其进行解码并使用解码后的 URL 触发 window.open()。参数相同,并且具有:
- adf.tfDoc
- adf.tfId
- 文章参考
- 上一页查看
- 来自UCM
- 文章类型
- 开发者
参数进去。所以我知道没有像value="%.." 这样的查询字符串。
更新 - 3
我写了如下方法:
var decodeURLRecursively = function(url) {
if(url.indexOf('%') != -1) {
return decodeURLRecursively(decodeURIComponent(url));
}
return url;
}
【问题讨论】:
-
似乎是在服务器上修复而不是在前端修补它的问题。
-
我认为不可能,你可以对一个字符串进行两次编码。这可能看起来像两次编码的字符串或尝试发送编码的字符串。
-
@elclanrs,可能是服务器的问题,但有什么方法可以检查我的要求吗?
-
@mishik 我已经更新了我的问题,你能看一下吗?
-
@TapasBose 如果你想将
value=%传递给服务器怎么办?
标签: javascript urlencode urldecode