PDF.js訪問遠程服務器報file origin does not match viewer's

下載PDF.js(會附帶下載資源)

後面會附帶下載地址,其中包含兩個文件夾build和web文件夾,build文件夾是PDF.js核心文件,web下爲展示PDF的視圖界面viewer.html;

在項目中要在線預覽PDF,進行以下步驟:

方法1:

新建一個html頁面,在頁面中使用iframe標籤,通過iframe標籤嵌套viewer.html,如果是隻加載本地文件,在viewer.js修改默認的pdf文件路徑(DEFAULT_URL字段)即可。

<iframe src="web/viewer.html" width="100%" height="800px" id="Iframe"></iframe>

修改viewer.js的默認的pdf的文件路徑

var DEFAULT_URL = 'test.pdf';

方法2:

但是我們的需求往往不是加載一張靜止的PDF文件,所以我們通常用的比較多的是第二種方法加載遠程服務器返回pdf文件流,然後在viewer.html的url後面添加file=http://127.0.0.1:8088/PDF/test.pdf;

我在js代碼中是這樣使用的:

$("#Iframe").attr("src","../www/assets/third/pdfjs/web/viewer.html?file="+originUrl+"");

這樣就實現了預覽遠程服務器的文件流,但是pdf.js不支持跨域請求,所以會報錯:file origin does not match viewer’s,試了很多種方法仍然報錯,所以簡單粗暴的方法就是把viewer.js的判斷遠程地址的代碼註釋掉即可。

需要在viewer.js中註釋的代碼如下:

  // if (origin !== viewerOrigin && protocol !== 'blob:') {
      //   throw new Error('file origin does not match viewer\'s');
      // }

然後重新加載發現可以完美的加載出來了。

pdf.js下載地址:https://download.csdn.net/download/fuzhongbin/10754996

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章