首页
App
&
Coffee
文档
项目
分享
反馈
俱乐部
登录
注册
jfinal重定向时,url编码后无法正确重定向
jounzhang
2019-04-03 16:02
做一个短链接服务,因为要重定向但是为了兼容url中包含中文,重定向后会产生乱码,所以重定向前将url进行encode编码,但是jfinal检测到包含了“.”就无法正确重定向
项目:
JFinal
评论区
jounzhang
2019-04-03 16:02
@jfinal
回复
JFinal
2019-04-03 16:10
字符 . 与重定向无关
回复
jounzhang
2019-04-04 09:30
@JFinal
ActionHandler里面:
if (target.indexOf('.') != -1) {
return ;
}
RedirectRender类里面:
// 如果一个url为/login/connect?goto=http://www.jfinal.com,则有错误
// ^((https|http|ftp|rtsp|mms)?://)$ ==> indexOf 取值为 (3, 5)
if (contextPath != null && (url.indexOf("://") == -1 || url.indexOf("://") > 5)) {
result = contextPath + url;
} else {
result = url;
}
其他的没仔细看,结果就是这样:
原始url
https://www.baidu.com/s?wd=今天晚上吃什么
url encode
https%3A%2F%2Fwww.baidu.com%2Fs%3Fwd%3D%E4%BB%8A%E5%A4%A9%E6%99%9A%E4%B8%8A%E5%90%83%E4%BB%80%E4%B9%88
然后调用redirect(url)重定向无法成功,会自动在前面加上contextPath,变成
http://localhost/https%3A%2F%2Fwww.baidu.com%2Fs%3Fwd%3D%E4%BB%8A%E5%A4%A9%E6%99%9A%E4%B8%8A%E5%90%83%E4%BB%80%E4%B9%88
但是直接redirect("https://www.baidu.com/s?wd=今天晚上吃什么")的话,会中文乱码
所以现在我只能对部分进行编码了,只编码中文和特殊符号
回复
发送
我要反馈
热门反馈
扫码入社