2017-01-06 2 views
2

Я хочу, чтобы мой TextureLoader использовать авторизацию заголовка для загрузки текстур:Как установить заголовки на исходящий запрос THREE.TextureLoader?

let loader = new THREE.TextureLoader(); 
loader.headers = { . . . };     // I want this! 
let myTex = loader.load('my_authorized_url'); 

Я хочу передать пользовательские заголовки в запрос, посылаемый по проводу. Я вижу функцию Loader#setWithCredentials(), но я не могу сказать, как она используется (или если это даже то, что я должен использовать). Должен ли я подумать о написании собственного погрузчика?

EDIT: Это looks to me как нет нигде в ImageLoader источник, где можно было бы установить заголовок.

ответ

0

В конце концов я остановился на редактирование метод прототипа на 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 
    }, 
    ... 
}); 
Смежные вопросы