某企业 im 内置的 webview
长按图片选择保存到相册提示保存失败
和移动端的同事联调之后发现被 403 了,原因是把图片的 url 直接发送到了某个下载管理器之后保存,这个过程中丢失了登录的 cookie,也无法支持本身是 src=data:base64 的 webcanvas 图片。
移动端同事讲这个是 feature 不是 bug,你们觉得这个合理么?
1
xiangyuecn 2020-07-10 16:25:48 +08:00
因为做 app 的临时工懒 或者 压根不懂。data url 还好,blob url 就支持的更惨烈了,包括微信里面这种垃圾浏览器就不支持
|
2
phpfpm OP @xiangyuecn 但是正常的 img 的 url 不带 cookie,不能下载需要登录的图这件事情就不能忍啊。。。
|
3
crystom 2020-07-10 16:30:37 +08:00
图片链接应该有 token 吧,很多对象存储都支持
|
5
gam2046 2020-07-10 16:33:53 +08:00
这取决于产品设计,如果图片本身就不希望未获得授权的人随意访问,这个设计就很合理。
所以,不谈场景,说是不是合理就是耍流氓。 |
6
phpfpm OP @gam2046 不不不,两码事
不管是基于 token 还是基于 cookie,都是一定的访问控制。 现在一个用户可以在 webview 正常看到图片,他就应该能够长按保存这张图片——难道还取决于是 token 还是 cookie 么 |
7
gam2046 2020-07-10 16:39:39 +08:00
> 现在一个用户可以在 webview 正常看到图片,他就应该能够长按保存这张图片
这里面没有因果关系,你现在可以看,不能推导出你以后可以看,更不能推导出你可以自由地二次分发出去。 |
8
laoyur 2020-07-10 16:40:20 +08:00
> 是把图片的 url 直接发送到了某个下载管理器之后保存
都说是发往第三方了,又是个 GET 请求,我觉得只传递一个 URL 过去很合理 |
11
kera0a 2020-07-10 17:09:01 +08:00 via iPhone
@phpfpm 那就让你们移动端的同事像桌面浏览器一样,把 webview 的网络请求接管过来,图片缓存到本地,要下载就从本地缓存里拷贝呗
|
12
laoyur 2020-07-10 17:10:02 +08:00
@phpfpm webview 是个阉割版的浏览器,它隶属于 app,但没法跟 app 沟通怎么保存图片,所以就跳去了默认浏览器
pc 浏览器是完整浏览器,原地 saveas 就是它自己实现的保存到本地 用户体验是有不足,但“调用第三方打开某个 URL 时不传递 cookies 等其他 headers”这一行为,我觉得没问题 |
13
phpfpm OP |
14
gam2046 2020-07-10 17:12:31 +08:00
你这是不是耍赖。
我和你说产品设计,你告诉我说逻辑; 我和你说逻辑关系,你告诉我说奇怪; 所以你的中心思想,就是和你想的不一样,就是不对呗。 |
16
crystom 2020-07-12 00:00:36 +08:00
长按保存到相册这个功能应该是需要移动开发手撸的,想做成跟浏览器一样还真不那么容易。还有一个是 302 跳转的返回功能,在浏览器内习以为常的自带功能在 webview 开发就是一大段代码
|