传url链接参数 前端get方法_在url get参数中传递大量数据参数的解决方案

当需要在URL中传递大量复杂参数时,传统的GET方式会导致URL过长且不美观。博主通过引入lz-string库,对数据进行压缩并转换为Base64字符串,然后在URL中以加密形式传递。在接收端解密还原数据,有效解决了这个问题,同时提升了URL的整洁性和安全性。
摘要由CSDN通过智能技术生成

问题

为什么我一定要在url get参数里传递大量参数,而不使用post提交呢?

由于实际项目实现了前后端分离,前端是vue框架开发,而且也并没有做成单页应用,所以会出现两个页面需要大量传递参数的情况。

思考

传统的get参数,将数据使用a=1&b=2的格式传递。这个方法有一个缺点,如果是对象、数组的情况下参数会是这样的:a[0][id]=1&a[0][name]=aaa&a[1][id]=1&a[1][name]=aaa。如果数据格式复杂一些,那url长度会非常长。虽然现代浏览器和服务器支持的url长度还不算短,但是这样既不美观,也使得url中有过多冗余字符,不好。

接下来我灵光一现,想到了数据压缩!

解决于是我找到了lz-string,这是一个js的数据压缩解压库。

用法:

var data = {

id: 1,

name: '啊啊啊',

list: [

{name: 'a'},

{name: 'b'},

{name: 'c'},

],

};

// 数据加密

var compressResult = LZString.compressToBase64(JSON.stringify(data));

// 加密结果:N4IglgJiBcCMA0IB2BDAtgUxiQUqp5IgDZgDOALjANqiqbYogC+8N6W0IARky8m9gGMmAXUZA===

// 数据解密

var decompressResult = JSON.parse(LZString.decompressFromBase64(compressResult));

console.log(data, compressResult, decompressResult);复制代码

最后,我传参先进行数据加密,以这样的方式传参:/?data=加密结果的base64

在接收参数的页面中,从get参数中获取data后进行解密。

这样就解决了问题,而且url变得好看又安全!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值