Browse Source

Merge pull request #17636 from nh2/issue-17635-fix-file-loader-caching-on-http-failure

FileLoader: Fix error response bodies being cached as results
Mr.doob 5 years ago
parent
commit
6fcaa8ef3d
1 changed files with 4 additions and 2 deletions
  1. 4 2
      src/loaders/FileLoader.js

+ 4 - 2
src/loaders/FileLoader.js

@@ -172,8 +172,6 @@ FileLoader.prototype = Object.assign( Object.create( Loader.prototype ), {
 
 
 				var response = this.response;
 				var response = this.response;
 
 
-				Cache.add( url, response );
-
 				var callbacks = loading[ url ];
 				var callbacks = loading[ url ];
 
 
 				delete loading[ url ];
 				delete loading[ url ];
@@ -185,6 +183,10 @@ FileLoader.prototype = Object.assign( Object.create( Loader.prototype ), {
 
 
 					if ( this.status === 0 ) console.warn( 'THREE.FileLoader: HTTP Status 0 received.' );
 					if ( this.status === 0 ) console.warn( 'THREE.FileLoader: HTTP Status 0 received.' );
 
 
+					// Add to cache only on HTTP success, so that we do not cache
+					// error response bodies as proper responses to requests.
+					Cache.add( url, response );
+
 					for ( var i = 0, il = callbacks.length; i < il; i ++ ) {
 					for ( var i = 0, il = callbacks.length; i < il; i ++ ) {
 
 
 						var callback = callbacks[ i ];
 						var callback = callbacks[ i ];