我希望我TextureLoader使用标题授权来加载纹理:
let loader = new THREE.TextureLoader();
loader.headers = { . . . }; // I want this!
let myTex = loader.load('my_authorized_url');
Run Code Online (Sandbox Code Playgroud)
我想将自定义标头传递到通过网络发送的请求中。我看到了这个Loader#setWithCredentials()函数,但我不知道它是如何使用的(或者这是否是我应该使用的)。我应该考虑编写自己的加载程序吗?
编辑:在我看来,ImageLoader源代码中没有可以设置标头的地方。
我最终决定编辑原型方法Loader:
Object.assign(THREE.XHRLoader.prototype, {
load: function(a, b, c, d) {
void 0 !== this.path && (a = this.path + a);
var e = this
, f = THREE.Cache.get(a);
if (void 0 !== f)
return e.manager.itemStart(a),
setTimeout(function() {
b && b(f);
e.manager.itemEnd(a)
}, 0),
f;
var g = new XMLHttpRequest;
g.overrideMimeType("text/plain");
g.open("GET", a, !0);
//
// ..............
// NOTE THIS LINE:
//
g.setRequestHeader('HEADER_KEY', 'HEADER_VALUE');
g.addEventListener("load", function(c) {
var f = c.target.response;
THREE.Cache.add(a, f);
200 === this.status ? (b && b(f),
e.manager.itemEnd(a)) : 0 === this.status ? (console.warn("THREE.XHRLoader: HTTP Status 0 received."),
b && b(f),
e.manager.itemEnd(a)) : (d && d(c),
e.manager.itemError(a))
}, !1);
void 0 !== c && g.addEventListener("progress", function(a) {
c(a)
}, !1);
g.addEventListener("error", function(b) {
d && d(b);
e.manager.itemError(a)
}, !1);
void 0 !== this.responseType && (g.responseType = this.responseType);
void 0 !== this.withCredentials && (g.withCredentials = this.withCredentials);
g.send(null);
e.manager.itemStart(a);
return g
},
...
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1182 次 |
| 最近记录: |