tic*_*ock 0 redirect http hashtag
我有两个服务器系统...一个托管应用程序,另一个托管身份验证/授权。当应用程序检测到用户尚未登录时,它将重定向到身份验证服务器,并将用户最初请求的URL作为参数传递,以便在身份验证之后,用户将被重定向回应用程序服务器到最初请求的确切网址。
但是,如果该原始URL包含#,则将执行整个例程。看来浏览器正在解码url编码的参数,因此,将#号之后的所有内容都放到了地板上。我已经在Chrome,Safari和Firefox上尝试过此操作。
例:
原始网址:
https://xxx.com/#/main/by-users?param1=53¶m2=13¶m3=39
Run Code Online (Sandbox Code Playgroud)
重定向网址:
https://yyy.com/signin/?returnURL=https%3A%2F%2Fxxx.com%3A80%2F%23%2Fmain%2Fby-users%3Fparam1%3D53%26param2%3D13%26param3%3D39
Run Code Online (Sandbox Code Playgroud)
浏览器显示:
https://yyy.com/signin/?returnURL=https%3A%2F%2Fxxx.com%2F#/main/by-users?param1=53¶m2=13¶m3=39
Run Code Online (Sandbox Code Playgroud)
如您所见,包括#和之后的所有内容均已解码。因此,服务器永远不会获得完整的“ returnURL”参数值。基本上就是
https://xxx.com/
Run Code Online (Sandbox Code Playgroud)
这一定是某个规范的一部分,尽管似乎应该疯狂地对已编码的#进行解码和处理,就好像它从来没有被编码过一样。但是如何解决这个问题?
谢谢。
不知道这是最佳解决方案还是可以控制,但是如果您进行双重编码可能会起作用:例如,使用“%2523”代替“%23”。
然后,不需要的解码应将“%2523”转换为“%23”,从而将所需的结果保留在浏览器显示的重定向URL中。
| 归档时间: |
|
| 查看次数: |
13862 次 |
| 最近记录: |