APP 内部的 webview 展示的图片长按保存到相册只支持直接请求 URL,不支持登录信息和 base64data,这个设计合理么? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
phpfpm

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

  •  
  •   phpfpm 2020 年 7 月 10 日 1586 次点击
    这是一个创建于 2114 天前的主题,其中的信息可能已经有所发展或是发生改变。

    某企业 im 内置的 webview

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

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

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

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

    所以,不谈场景,说是不是合理就是耍流氓。
    phpfpm
        6
    phpfpm  
    OP
       2020 年 7 月 10 日
    @gam2046 不不不,两码事

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

    现在一个用户可以在 webview 正常看到图片,他就应该能够长按保存这张图片难道还取决于是 token 还是 cookie 么
    ntdll
        7
    ntdll  
       2020 年 7 月 10 日
    > 现在一个用户可以在 webview 正常看到图片,他就应该能够长按保存这张图片

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

    都说是发往第三方了,又是个 GET 请求,我觉得只传递一个 URL 过去很合理
    phpfpm
        9
    phpfpm  
    OP
       2020 年 7 月 10 日
    @gam2046 如果不想让用户长按保存,为什么还有长按保存的功能呢

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

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

    反正他们很厉害我们争不过
    ntdll
        14
    ntdll  
       2020 年 7 月 10 日
    你这是不是耍赖。

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

    所以你的中心思想,就是和你想的不一样,就是不对呗。
    phpfpm
        15
    phpfpm  
    OP
       2020 年 7 月 10 日
    @gam2046 我没太懂你的意思。。

    这个体验确实是不对啊。。
    crystom
        16
    crystom  
       2020 年 7 月 12 日
    长按保存到相册这个功能应该是需要移动开发手撸的,想做成跟浏览器一样还真不那么容易。还有一个是 302 跳转的返回功能,在浏览器内习以为常的自带功能在 webview 开发就是一大段代码
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2955 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 44ms UTC 11:02 PVG 19:02 LAX 04:02 JFK 07:02
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86