关于XHR请求的DOM异常11仅在Safari

时间:2015-12-03 21:23:20

标签: javascript ios safari xmlhttprequest

我有一个非常简单的函数,它使用xhr请求下载文件的块,如下所示:

var blobXHR = new XMLHttpRequest();

//api.media.chunkURL() returns the correct URL for each chunk
blobXHR.open("GET", api.media.chunkURL({
            fileId: fileID,
            chunkId: chunkNumber
            }));

blobXHR.responseType = "arraybuffer";

blobXHR.onerror = function (e) {
            console.log("Error: ", e);
            };

var arrayBuffer;
blobXHR.onload = function (e) {
            arrayBuffer = blobXHR.response;
            };

blobXHR.send();

现在,使用Chrome,Firefox和几乎所有Android浏览器,此下载功能完全没有任何障碍。不幸的是,当使用基于Safari或iOS的任何东西时,我在blobXHR.onerror()中得到一个非常模糊的错误。当我将此错误输出到控制台时,我在" e.currentTarget.responseText":

下得到此回复
Error: InvalidStateError: DOM Exception 11

我已经查找了许多与此类似的问题,似乎没有任何效果。有没有理由我只使用Safari / iOS浏览器体验这个?

编辑:这是我在onerror()中的console.log(blobXHR)时得到的:

BlobXHR state on onerror()

1 个答案:

答案 0 :(得分:1)

这可能是一个CORS问题。确保您的服务器配置正确,允许:

http://enable-cors.org/server.html

还要注意Safari不允许localhost用于CORS。