现在简单地通过说
进行重定向window.location = "/relative_path/";
我想要做的是添加一个查询参数以及此重定向,因此目标页面可以查看它,并且在采取某些操作后,它可以进一步重定向到该页面。
该用途的示例是登录系统。当用户的令牌到期时,他被重定向到登录页面。在重定向时,我想将确切的URL(包括URL中的查询参数)传递给登录页面,因此在成功登录后,用户可以被重定向回到他/她所在的位置。
我尝试将路径作为URL参数传递,但由于转义问题而无法正常工作:重定向网址使用相同的字符(?,=,...),这会混淆系统,以及参数被截断。
这样的事情,但这显然不起作用:
window.location = "/login?redirect=/original_location?p1=vl1&p2=v2
任何建议都表示赞赏。
答案 0 :(得分:6)
您可以使用encodeURIComponent()
encodeURIComponent()方法通过将某些字符的每个实例替换为表示字符的UTF-8编码的一个,两个,三个或四个转义序列来编码统一资源标识符(URI)组件(将只有四个转义符号)由两个“代理”字符组成的字符序列。
实施例
window.location = "/login?redirect=" + encodeURIComponent("/original_location?p1=vl1&p2=v2")