V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  lisongeee  ›  全部回复第 6 页 / 共 43 页
回复总数  855
1 ... 2  3  4  5  6  7  8  9  10  11 ... 43  
@inza9hi

只要按照使用标准序列化对象解析/构造 url ,无论服务调用多少次都不可能出现这种问题

但是实际上很多程序员都是半吊子懒狗,都喜欢手动拼接/分割参数,这就容易导致解码/编码时破坏整个 url
好奇除了我上面说的修改 ast 还有啥更好的方法?这种方法是对 code hint/refactor 最友好的方式

如果你的项目无法接入编译插件或者没有构建系统支持,那确实不行
> 假设我们坚决不使用点表示法,且要实现上面这些功能,你要如何设计才能如此简单、高效?

修改 ast 实现就行,指定一个带有特定 Identifier 的 CallExpression 如

__safe__(a.b.c = 1)

将这个 CallExpression 修改为类似 if(!a){a={b:{c:1}}}else if(!a.b){a.b={c:1}}else{a.b.c=1} 的 IfStatement

不过我看大佬你写的都是原生框架,估计懒得弄这种编译插件

另外用字符串表示 MemberExpression ,如果改变量名的时候还得一个一个改,可维护性太低(如果你乐意那当我没说)
@tool2dx

你的回复和我的回复没有一点关系,你是不是回复错人了

---

另外 base64 尾部的 = 只是为了让这个 base64 string 的长度是 4 的倍数

而现在的大多数解析器解析时都是支持忽略尾部 = 字符的,所以很多工具生成的 base64 都没有 = 字符
> 被 base64 坑了好几次,按=截断 key=value 数据

看起来你的场景是在反序列化 url string 里的 search 参数,好奇为什么不用标准序列化对象?

https://developer.mozilla.org/en-US/docs/Web/API/URL

另外将 base64 编码到 url search 参数里的时候,也要调用标准序列化方法

此时 base64 里的 = 字符会变成 %3D ,如果按照这个标准序列化,你的分割不会出现错误

我猜测两边都是手动拼接/手动分割字符串去构造参数,而不是去使用标准序列化和反序列化方法

我们这边后端一个系统 解析/构造 url 的时候不按照标准走,产生如 hash 丢失,参数解码错误破坏整个 url

还有 飞书 的网页第三方登录,点击拒绝授权的时候,如果你的参数里面有 url ,url 里面有特殊字符,虽然你的按标准走的,但是煞笔飞书会手动解码两次后拼接,导致破坏整个 url 导致参数丢失

每次跟这些不按标准喜欢自己拼接字符串的煞笔对接都气死我了
128 天前
回复了 sgld 创建的主题 Python for 循环里面的迭代器到底怎么迭代的
实际上这个附件链接和 GitHub 没关系,域名都不是 GitHub 的,只相当于你在微信/QQ 里发了百度网盘的链接
好像很多人都中了这个病毒? Github 搜索到 4k 数量的 issue

https://github.com/search?q=%22password%3A+changeme%22&type=issues
129 天前
回复了 seanwhy 创建的主题 Electron [求助] Electron 中运行 Webassembly 疑问
你可能需要展示 electron 版本或者给出复现仓库以便大伙更好排查问题
哥,换个行吧,一大串连起来的文字看起来是真累
138 天前
回复了 godruoyi 创建的主题 程序员 如何快速搭建自己的博客网站
鼠标滑动状态不一致而且看不到当前页面滑动进度,不知道这个特性是好是坏
139 天前
回复了 kylebing 创建的主题 分享创造 一个优雅的 js canvas 时钟表盘
看起来全是矢量图形,感觉可以 css+svg 实现,不需要 canvas
140 天前
回复了 zzm88104 创建的主题 程序员 如何调试反 debug 的网页?
这有一个方案,通过重新编译浏览器,将 debug 更换为其他的 关键字 来禁用目标网页的 反调试 同时不影响自己的调试

https://github.com/Sec-ant/a2d2-firefox
146 天前
回复了 Juslt 创建的主题 硬件 表弟刚考上大学,想买台笔记本电脑,求推荐
游戏本现在不叫游戏本,叫高性能笔记本,你就说买的是高性能笔记本,这样他父母应该没意见了
感觉这类下载工具可以搭配 tauri 一类的前端框架改进用户体验

因为使用 cli 交互就注定门槛比较高(虽然对我没门槛),用户量自然也比较少
1 ... 2  3  4  5  6  7  8  9  10  11 ... 43  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1308 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 30ms · UTC 23:42 · PVG 07:42 · LAX 15:42 · JFK 18:42
Developed with CodeLauncher
♥ Do have faith in what you're doing.