decodeURIComponent
エンコードされた URL をデコードするためにJavascript メソッドを使用しています。現在、サーバー間のリダイレクト中に URL が 2 回エンコードされることもあれば、1 回だけエンコードされることもあるという問題があります。
メソッドを呼び出した後、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;
}