pdf+iphone+wechat

可能很多人要问,为啥标题取这个名字。

因为今天在这个上面踩了太多坑。。

我们的需求其实很简单。做一个页面,把pdf文档嵌进去,在线显示。

如此需求,放在PC上chrome浏览器,一个embed标签就搞定了。可是碰到上面三个组合,就SB了。。

主要就是三个坑:

1)pdf在safari中,如果采用embed标签内嵌入html,那么只能显示第一页,剩下的无法显示,更无法用滚动的方式查看。

2)通过使用微信扫一扫功能,获得的网址腾讯会进行安全性检查,只有正式备过案的域名才可以直接跳转显示。但是,我们的视频,音频,文档等资源都存放在AWS的S3上面。因而不能直接跳转到这些资源的S3链接上。必须要通过一个html页面进行封装,只要封装的html网页的域名是备过案的,那么就不会被腾讯审核。后来经过试验,发现mp4,mp3,jpg等常见媒体资源可用这种方式逃过检查,但是pdf这种资源通过embed标签内嵌的时候仍旧会触发微信的检测机制。可能是因为pdf需要调用浏览器显示插件,额外触发了微信的二次审核。

3)pdf文档的链接必然被微信的审核。表面上看,所谓审核就是弹出一个页面,提示“非微信官方网页 转换为手机预览模式”。如果点击确定,那就跳转到目标网页。问题就出在这儿,跳转之后并不是简单的跳转,而是在原来的url后面加了一个nsukey这么一个参数。为了防止资源盗链,我们对s3的链接做了签名处理,这下无故多出一个get请求参数,签名被破坏,以致于无法访问到对应的资源。坑爹!

万般无奈之下,只能做一个页面,提示用微信扫描二维码进入该页面的用户,用其他浏览器打开该网站,然后直接访问我们提供的经过签名的原始资源链接。如此一来,浏览器便能正确完整打开pdf文档了。

posted @ 2016-10-26 15:17  IT屁民  阅读(556)  评论(0编辑  收藏  举报