两个 HTML 页面如何传输超过 255 字节的字串?

2018-12-04 12:27:28 +08:00
 nikoo
两个 HTML 分别为:
http://a.com/send.html
http://b.com/receive.html

需求是在 send.html 中将超过 255 字节的字串例如"aaaaaa..." 发送至 receive.html
用户首先打开 http://a.com/send.html 浏览器跳转并最终停留在 http://b.com/receive.html 并在该页面显示"aaaaaa..."

最合理的方法是在 send.html 制作一个自动提交的 form 至 receive.html
但是因为 receive.html 不支持服务器脚本,所以无法接收 POST 类型数据,同时 GET 类型考虑到浏览器兼容性,对于超过 255 字节的数据可能会有问题?

求教各位有什么更为合理的实现方法,谢谢!
1761 次点击
所在节点    问与答
16 条回复
fe619742721
2018-12-04 12:34:26 +08:00
window.name 试试。
a 页面修改 window.name,同窗口跳转后继续读取 window.name
fe619742721
2018-12-04 12:36:15 +08:00
哈哈,这是之前一个朋友讨论不安全跨域方式的时候提到的,奇技淫巧,安全性很差
loading
2018-12-04 12:36:15 +08:00
想了好几个,几乎都要用到 js,我看你这提问的描述,我还是不回答了。

等你写清楚,还有你水平如何再回答吧。
GDC
2018-12-04 12:41:21 +08:00
你要兼容到多老的浏览器?阿里云的购物车页面把整个商品信息 get 请求到下一个页面,255 的限制是很老的浏览器了
Tetsuchou
2018-12-04 12:56:36 +08:00
压缩一下?
qgy18
2018-12-04 13:02:12 +08:00
最古老的 IE 允许的 URL 长度难道不是 2083 字节么?
nikoo
2018-12-04 13:02:18 +08:00
@loading 谢谢,当然可以使用 JS,receive.html 只是不支持服务端脚本,如 PHP 之类
nikoo
2018-12-04 13:03:59 +08:00
@GDC 谢谢,很有收获,所以说 255 字节的 URL 限制目前做前端开发并不需要考虑是吗?
loading
2018-12-04 13:06:32 +08:00
简单就是用 js,然后跳 receive.html#aaaaaa

如果长度不够,能利用第三方短链接服务。
新浏览器长度已经不是 255 了。
nikoo
2018-12-04 13:08:24 +08:00
@fe619742721 测试可行,,,这个操作真的非常秀!用在生产环境会有什么毛病吗?
nikoo
2018-12-04 13:10:54 +08:00
@loading 谢谢,若用 js 最终还是 URL 参数跳转那和 form get 没什么区别吧?
wuhaoworld
2018-12-04 13:11:56 +08:00
GDC
2018-12-04 13:30:45 +08:00
@nikoo

用 hash 并不会把 # 后面的内容传给后端,而且 js 并没有原生获取 get 参数的方法,只能对整个 url 做解析。

总的来说你这个情况,最简单的方法就是把要传给的内容放在一个 json 对象中,转成字符串,再 base64 解决一下字符问题,然后一起放在 # 后面给下一个页面。
GDC
2018-12-04 13:38:33 +08:00
@nikoo 或者如果你只有一个参数要传递、而且只是文字内容,就直接用 btoa() 函数套个 base64 传给下一页。后面的页面用 window.location.hash 就能读取到 # 后面的内容,用 atob() 解析一下 base64 就好啦
DOLLOR
2018-12-04 15:47:05 +08:00
sessionStorage
localStorage
cookie
DOLLOR
2018-12-04 15:50:34 +08:00
没看清楚,要跨域的话,可能要用 HASH 更好了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/514164

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX