diff --git a/src/components/gltf-model-plus.js b/src/components/gltf-model-plus.js
index bc0457d6559631f241714439dd1de8cd345d014f..4ca78bb33c89f0b62f36307ff1e7d9807560ecb2 100644
--- a/src/components/gltf-model-plus.js
+++ b/src/components/gltf-model-plus.js
@@ -221,9 +221,13 @@ async function resolveGLTFUri(gltfProperty, basePath) {
 }
 
 async function loadGLTF(src, token, contentType, preferredTechnique, onProgress) {
-  const basePath = THREE.LoaderUtils.extractUrlBase(src);
+  const resolved = await resolveMedia(src, token);
+  const raw = resolved.raw;
+  const origin = resolved.origin;
+  contentType = contentType || resolved.contentType;
+  const basePath = THREE.LoaderUtils.extractUrlBase(origin);
 
-  let gltfUrl = src;
+  let gltfUrl = raw;
   let fileMap;
 
   if (contentType.includes("model/gltf+zip") || contentType.includes("application/x-zip-compressed")) {
diff --git a/src/components/media-loader.js b/src/components/media-loader.js
index 81303a07d67946e187ea7664252dab3af20846b3..abe00eb02002ec28fa4872ad741f6a25c9dcfb57 100644
--- a/src/components/media-loader.js
+++ b/src/components/media-loader.js
@@ -65,7 +65,7 @@ AFRAME.registerComponent("media-loader", {
 
       if (!url) return;
 
-      const { raw, origin, contentType } = await resolveMedia(url, token);
+      const { raw, contentType } = await resolveMedia(url, token);
 
       if (token) {
         if (this.blobURL) {
@@ -106,7 +106,7 @@ AFRAME.registerComponent("media-loader", {
           { once: true }
         );
         this.el.addEventListener("model-error", this.onError, { once: true });
-        const src = this.blobURL || origin || url;
+        const src = this.blobURL || url;
         this.el.setAttribute("gltf-model-plus", {
           src,
           contentType,