Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 移动应用程序中的PDF.JS访问控制允许源问题_Javascript_Cordova_Sencha Touch_Pdf.js - Fatal编程技术网

Javascript 移动应用程序中的PDF.JS访问控制允许源问题

Javascript 移动应用程序中的PDF.JS访问控制允许源问题,javascript,cordova,sencha-touch,pdf.js,Javascript,Cordova,Sencha Touch,Pdf.js,我正在尝试使用Sencha和Cordova为移动设备开发一个应用程序。由于Android浏览器中没有PDf支持,我决定使用PDf.JS。它在加载本地PDf文件时工作正常,但在尝试打开远程文件时会抛出错误 http://<remote server pdf location>. Origin file:// is not allowed by Access-Control-Allow-Origin http://。访问控制不允许原始文件:/。允许原始文件 请让我知道如何解决这个问题

我正在尝试使用Sencha和Cordova为移动设备开发一个应用程序。由于Android浏览器中没有PDf支持,我决定使用PDf.JS。它在加载本地PDf文件时工作正常,但在尝试打开远程文件时会抛出错误

http://<remote server pdf location>. Origin file:// is not allowed by Access-Control-Allow-Origin
http://。访问控制不允许原始文件:/。允许原始文件
请让我知道如何解决这个问题。有没有办法在PDF.JS中解决这个问题。我只需要本地PDF.Js文件,因为应用程序也需要脱机功能


提前感谢

PDF.js使用WebWorkers下载文档时出现问题。WebWorkers中的CORS在浏览器中是一团混乱。(无论如何,CORS是一团糟。)

以下情况将不起作用:

解决方案:自己使用响应类型arraybuffer进行ajax操作,然后将响应反馈到PDF.js:

.success(function(buffer){
    PDFJS.getDocument(buffer);  
})

不要使用URL调用
PDFJS.getDocument
,首先通过XMLHttpRequest获取二进制数据,然后将结果传递给
getDocument
调用以代替URL。这将避免在Cordova应用程序中运行时PDFJS库所固有的问题

以下代码示例取自此处的pdfJs示例:。在
customview.js

替换此代码: 使用此代码: 这样你就可以打电话: 而不是:
我用一个简单的方法解决了这个问题,打开你的pdf.js代码,然后首先用。现在,将所有代码复制到代码编辑器并搜索字符串“无法加载” 然后您将看到类似这样的代码

现在,您必须添加
i.setRequestHeader(“Origin”,window.location.hostname)之后
const i=新的XMLHttpRequest(347行)

最终代码如下所示

请注意,在348处新增了一行


现在,保存它,您就可以开始了!!否,CORS有问题:)

不工作,仍被CORS策略阻止:请求的资源上不存在“访问控制允许来源”标头。
/* ---- customview.js ----- */
PDFJS.getDocument(url)
    .then(function getPdfHelloWorld(_pdfDoc) {
      pdfDoc = _pdfDoc;
      renderPage(pageNum);
    });
/* ---- customview.js ----- */
function callGetDocment (response) {
  // body...

  PDFJS.getDocument(response).then(function getPdfHelloWorld(_pdfDoc) {
    pdfDoc = _pdfDoc;
    renderPage(pageNum);
  });
}

function getBinaryData (url) {
    // body...
    var xhr = new XMLHttpRequest();

    xhr.open('GET', url, true);
    xhr.responseType = 'arraybuffer';
    xhr.onload = function(e) {
        //binary form of ajax response,
        callGetDocment(e.currentTarget.response);
    };

    xhr.onerror = function  () {
        // body...
        alert("xhr error");
    }

    xhr.send();
}
var url = 'http://nodetuts.com/pdf/handson-nodejs-sample.pdf';
getBinaryData(url); //call this fn on page load 
var url = 'http://nodetuts.com/pdf/handson-nodejs-sample.pdf';
PDFJS.getDocument(url);