查询参数中的编码斜杠 (%2F) 会导致 Angular 应用程序中的重定向失败



在我的角度应用程序中,我需要对Tomcat服务器进行GET调用。此 GET 调用需要查询参数,这些参数也可以包含特殊字符,如"+"、"/"、"/+" GET调用是从角度控制器发出的,使用$window.open,目标为"_blank">

当前重定向在没有任何编码的情况下失败。

因此,我在使用 encodeURIComponent 进行 GET 调用之前.js文件中添加了编码。

然后,我在后端 java 代码中使用 URLDecode.decode 添加了解码逻辑来解码查询参数。

但它仍然不起作用。

仅当我使用 encodeURIComponent 两次在.js文件中对查询参数进行两次编码时,它才有效。

我试图找到双重编码的根本原因,但还没有运气。如果有人可以分享任何意见,我将不胜感激。

通过在app.js的路径参数中添加*来使其工作。添加星号意味着请求将包含多个由/分隔的路径参数,因此 angular 不会尝试在请求中对/进行编码。
双重编码也可以工作,但随后必须修改服务器端逻辑以解码请求参数两次,并将%2B2F替换为%2F

最新更新