会话转移不会保留 HTTPS 上的偏好设置,并对 Cookie 进行双重编码
作者: jingkang0822创建于 2026年8月28日更新于 2026年9月17日
标签BugWaiting on Testing
说明
会话传输流无法可靠地维护客户偏好. 目前的执行工作有两个独立的问题:
- 在HTTPS上,垫面客户端在"prifs"中存储首选项,而转接UI只读作"prifsHttp",接收者总是写作"prifsHttp".
- 转移UI从 " document.cookie " 读取原始百分比编码饼干值。 将这个值传递给快递
res.cookie ()' 重新编码% 的标志 。 在目的地,js-cookie'解码一次,留下了%的编码为`JSON.parse ()'不能解码的JSON。
在f2cf95e06cd613fd0a06bbcb755e044c1dbfe306 ' 的开发 ' 上现载:
欢迎.ts'返回生饼干线文本并只读作prifsHttp'- [
pad cookie.ts'在HTTPS上选择prifs',并将解码值解码为JSON](https://GitHub.com/ether/etherpad/blob/f2cf95e06cd613fd0a06bbcbbc755e044c1dbfe306/src/static/js/pad cookie.ts#L22-L61) - [接收者在
prifsHttp'下用res.cookie ()'(https://GitHub.com/ether/etherpad/blob/f2cf95e06cd613fd0a06bbcbbbb755e044c1dbfe306/src/node/hooks/expression/tokenTransfer.ts#L76-L94)撰写所提交的数值 - [饼干文档确认协议特定名称] (https://GitHub.com/ether/ethpad/blob/f2cf95e06cd613fd0a06bbcbbb755e044c1dbfe306/doc/cookies.md#L6-L10).
- 复制步骤
- 在HTTPS上打开一个垫子并更改一个客户端偏好,如主题/font/聊天能见度.
- 从设置对话框创建会话传输 。
- 在不同的浏览器/设备中重新编辑代码。
- 打开一个垫子并检查所转让的优惠。
HTTPS 源代码不提交 " Prefs " 饼干。 在 HTTP 上, “ prefsHttp ” 存在, 一个典型的 JSON cookie, 如“ 7B% 22...% 22% 7D ” 是以编码形式提交的, 然后在写入目的地 cookie 时再次编码 。
实际行为
首选项在传输后缺失或无法读取; " pad cookie.ts " 在其 " JSON.parse () " 失败后退后。
预期行为
目的地在HTTP和HTTPS的部署方面应获得同样的偏好,在`js-cookie'预期的饼干格式中编码一次。
可能的方向
传输一个已解码/验证的首选对象或JSON字符串而不是饼干线字节,根据请求协议选择源/去向饼干名称,让一层进行饼干编码.
不需要插件 。 我发现了这一点,同时设定了一个自动代码审查工作流程的基准,并在报告之前手动核实了当前来源并重复搜索.
内容来源: ether/etherpad