可能不少人要問,爲啥標題取這個名字。html
由於今天在這個上面踩了太多坑。。chrome
咱們的需求其實很簡單。作一個頁面,把pdf文檔嵌進去,在線顯示。瀏覽器
如此需求,放在PC上chrome瀏覽器,一個embed標籤就搞定了。但是碰到上面三個組合,就SB了。。安全
主要就是三個坑:微信
1)pdf在safari中,若是採用embed標籤內嵌入html,那麼只能顯示第一頁,剩下的沒法顯示,更沒法用滾動的方式查看。網站
2)經過使用微信掃一掃功能,得到的網址騰訊會進行安全性檢查,只有正式備過案的域名才能夠直接跳轉顯示。可是,咱們的視頻,音頻,文檔等資源都存放在AWS的S3上面。於是不能直接跳轉到這些資源的S3連接上。必需要經過一個html頁面進行封裝,只要封裝的html網頁的域名是備過案的,那麼就不會被騰訊審覈。後來通過試驗,發現mp4,mp3,jpg等常見媒體資源可用這種方式逃過檢查,可是pdf這種資源經過embed標籤內嵌的時候仍舊會觸發微信的檢測機制。多是由於pdf須要調用瀏覽器顯示插件,額外觸發了微信的二次審覈。url
3)pdf文檔的連接必然被微信的審覈。表面上看,所謂審覈就是彈出一個頁面,提示「非微信官方網頁 轉換爲手機預覽模式」。若是點擊肯定,那就跳轉到目標網頁。問題就出在這兒,跳轉以後並非簡單的跳轉,而是在原來的url後面加了一個nsukey這麼一個參數。爲了防止資源盜鏈,咱們對s3的連接作了簽名處理,這下無端多出一個get請求參數,簽名被破壞,以至於沒法訪問到對應的資源。坑爹!插件
萬般無奈之下,只能作一個頁面,提示用微信掃描二維碼進入該頁面的用戶,用其餘瀏覽器打開該網站,而後直接訪問咱們提供的通過簽名的原始資源連接。如此一來,瀏覽器便能正確完整打開pdf文檔了。視頻