html5 xmlhttprequest,如何控制HTML5 Web Worker上的XMLHttpRequest对象?

我有一个页面,它通常会用一个包装器覆盖window.xmlhttpRequest,这个包装器可以做一些额外的事情,比如在某些请求上插入头文件。

我在使用HTML5 Worker的第三方库中有一些功能,我们看到这个请求不使用XMLHttpRequest包装器对象。因此,此库发出的任何请求都缺少所需的头,因此请求将失败。

是否有方法控制当前线程创建的任何工作线程的xmlhttpRequest?

此第三方库代码如下所示:

function createWorker(url) {

var worker = new Worker(url);

worker.onmessage = function (e) {

if (e.data.status) {

onprogress(e.data.status);

} else if (e.data.error) {

onerror(e.data.error);

} else {

exportUtils.saveFile(new Blob([e.data]), params.fileName);

onfinish();

}

};

worker.postMessage(params); // window.location.origin +

return worker;

}

上面的url变量返回的javascript包含如下代码:

return new Promise(function(t, r) {

var n = new XMLHttpRequest

, a = "batch_" + o()

, u = e.dataUrl.split(e.serviceUrl)[1]

, c = [];

n.onload = function() {

for (var e = this.responseText, n = this.responseText.split("\r\n"), o = 0, a = n.length, i = a - 1; o < a && "{" !== n[o].slice(0, 1); )

o++;

for (; i > 0 && "}" !== n[i].slice(-1); )

i--;

n = n.slice(o, i + 1),

e = n.join("\r\n");

try {

var u = JSON.parse(e);

t(u)

} catch (t) {

r(s + e)

}

}

,

n.onerror = function() {

r(i)

}

,

n.onabort = function() {

r(i)

}

,

n.open("POST", e.serviceUrl + "$batch", !0),

n.setRequestHeader("Accept", "multipart/mixed"),

n.setRequestHeader("Content-Type", "multipart/mixed;boundary=" + a);

for (var p in e.headers)

"accept" != p.toLowerCase() && n.setRequestHeader(p, e.headers[p]);

c.push("--" + a),

c.push("Content-Type: application/http"),

c.push("Content-Transfer-Encoding: binary"),

c.push(""),

c.push("GET " + u + " HTTP/1.1");

for (var p in e.headers)

c.push(p + ":" + e.headers[p]);

c.push(""),

c.push(""),

c.push("--" + a + "--"),

c.push(""),

c = c.join("\r\n"),

n.send(c)

}

)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值