APP 内部的 webview 展示的图片长按保存到相册只支持直接请求 URL,不支持登录信息和 base64data,这个设计合理么?

2020-07-10 16:16:28 +08:00
 phpfpm

某企业 im 内置的 webview

长按图片选择保存到相册提示保存失败

和移动端的同事联调之后发现被 403 了,原因是把图片的 url 直接发送到了某个下载管理器之后保存,这个过程中丢失了登录的 cookie,也无法支持本身是 src=data:base64 的 webcanvas 图片。

移动端同事讲这个是 feature 不是 bug,你们觉得这个合理么?

1164 次点击
所在节点    问与答
16 条回复
xiangyuecn
2020-07-10 16:25:48 +08:00
因为做 app 的临时工懒 或者 压根不懂。data url 还好,blob url 就支持的更惨烈了,包括微信里面这种垃圾浏览器就不支持
phpfpm
2020-07-10 16:27:16 +08:00
@xiangyuecn 但是正常的 img 的 url 不带 cookie,不能下载需要登录的图这件事情就不能忍啊。。。
crystom
2020-07-10 16:30:37 +08:00
图片链接应该有 token 吧,很多对象存储都支持
phpfpm
2020-07-10 16:31:36 +08:00
@crystom 所以不支持基于 cookie 校验的图片是正常的?
gam2046
2020-07-10 16:33:53 +08:00
这取决于产品设计,如果图片本身就不希望未获得授权的人随意访问,这个设计就很合理。

所以,不谈场景,说是不是合理就是耍流氓。
phpfpm
2020-07-10 16:35:15 +08:00
@gam2046 不不不,两码事

不管是基于 token 还是基于 cookie,都是一定的访问控制。

现在一个用户可以在 webview 正常看到图片,他就应该能够长按保存这张图片——难道还取决于是 token 还是 cookie 么
gam2046
2020-07-10 16:39:39 +08:00
> 现在一个用户可以在 webview 正常看到图片,他就应该能够长按保存这张图片

这里面没有因果关系,你现在可以看,不能推导出你以后可以看,更不能推导出你可以自由地二次分发出去。
laoyur
2020-07-10 16:40:20 +08:00
> 是把图片的 url 直接发送到了某个下载管理器之后保存

都说是发往第三方了,又是个 GET 请求,我觉得只传递一个 URL 过去很合理
phpfpm
2020-07-10 17:05:30 +08:00
@gam2046 如果不想让用户长按保存,为什么还有长按保存的功能呢

用户有的图片能保存有的不能,这个体验很奇怪啊。
phpfpm
2020-07-10 17:05:49 +08:00
@laoyur 但是 pc 的浏览器为啥能做到原地的 saveas
kera0a
2020-07-10 17:09:01 +08:00
@phpfpm 那就让你们移动端的同事像桌面浏览器一样,把 webview 的网络请求接管过来,图片缓存到本地,要下载就从本地缓存里拷贝呗
laoyur
2020-07-10 17:10:02 +08:00
@phpfpm webview 是个阉割版的浏览器,它隶属于 app,但没法跟 app 沟通怎么保存图片,所以就跳去了默认浏览器
pc 浏览器是完整浏览器,原地 saveas 就是它自己实现的保存到本地
用户体验是有不足,但“调用第三方打开某个 URL 时不传递 cookies 等其他 headers”这一行为,我觉得没问题
phpfpm
2020-07-10 17:11:10 +08:00
@kera0a
@laoyur

嗯 我的意思是要做技术上肯定能实现,但是就是认为不是 bug 就有点……

反正他们很厉害我们争不过
gam2046
2020-07-10 17:12:31 +08:00
你这是不是耍赖。

我和你说产品设计,你告诉我说逻辑;
我和你说逻辑关系,你告诉我说奇怪;

所以你的中心思想,就是和你想的不一样,就是不对呗。
phpfpm
2020-07-10 17:32:57 +08:00
@gam2046 我没太懂你的意思。。

这个体验确实是不对啊。。
crystom
2020-07-12 00:00:36 +08:00
长按保存到相册这个功能应该是需要移动开发手撸的,想做成跟浏览器一样还真不那么容易。还有一个是 302 跳转的返回功能,在浏览器内习以为常的自带功能在 webview 开发就是一大段代码

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

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

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

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

© 2021 V2EX