我非常清楚使用GET方法并在网址中传递请求参数是不良做法和安全漏洞。但是我们处于项目开发几乎完成的状态,我们无法承担将所有GET更改为POST并重新测试整个事情的能力。
有没有办法更改显示的网址?
或者URL编码可以完成这项工作吗?请建议在这种情况下最好的方法。
答案 0 :(得分:1)
存在方式,它是HTML5 History API。
它需要JavaScript和HTML5 compliant browsers,或javascript fallback for old IE (eg History.js)。
看一下history.replaceState()
和history.pushState()
方法:第一个改变当前历史记录条目,第二个改变一个新方法(在后退按钮使用中产生噪声,所以我建议第一个)。 / p>
要删除QueryString(?param1=value1¶m2=value2
部分),只需在页面加载时运行此脚本:
<script>
$(function(){
history.replaceState("","",location.href.substring(0,location.href.indexOf("?")));
});
</script>
虽然这个客户端解决方案肯定会提高清晰度和眼睛糖果,但我怀疑它可以提高安全性; Post-Redirect-Get会更好,但如果你不能,那么就使用这种方法。
我通常将PRG与此结合使用来实现漂亮的URL,并且它运行良好。
请注意,这是一个模拟的PRG,加载页面后的F5可能会根据您对应用程序的编程方式 进行无法预测的行为 。