IIS 服务 加载three.js 解决跨域问题

本文介绍了解决在IIS环境下使用three.js加载本地3D模型时遇到的跨域问题的方法。通过在IIS服务中设置HTTP响应标头和MIME类型,实现对obj和mtl等文件的有效解析。

IIS 加载 three.js ,显示3D模型 遇到问题,解决备忘录:

解决three.js加载本地文件跨域
在这里插入图片描述

或在 IIS 服务中 的 “HTTP响应标头”选项中 加入 以上加粗内容

Step 2 IIS服务中的 “MIME类型”选项 中加入 自定义文件对应解析扩展名 ,此处我加载的是obj和mtl类型的文件,(以下以obj类型文件为示例)

在这里插入图片描述

chunk-vendors.js:13463 [HMR] Waiting for update signal from WDS... main.js:26 [Violation] Added non-passive event listener to a scroll-blocking 'mousewheel' event. Consider marking event handler as 'passive' to make the page more responsive. See https://www.chromestatus.com/feature/5745543795965952 addEventListener @ event.js:201 mountSingleDOMEventListener @ HandlerProxy.js:412 eval @ HandlerProxy.js:359 each @ util.js:300 mountLocalDOMEventListeners @ HandlerProxy.js:358 HandlerDomProxy @ HandlerProxy.js:486 ZRender @ zrender.js:138 init @ zrender.js:49 ECharts @ echarts.js:206 init @ echarts.js:1928 mounted @ cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/components/areaChart.vue?vue&type=script&lang=js:199 invokeWithErrorHandling @ vue.runtime.esm.js:3072 callHook$1 @ vue.runtime.esm.js:4087 insert @ vue.runtime.esm.js:4480 invokeInsertHook @ vue.runtime.esm.js:6999 patch @ vue.runtime.esm.js:7213 Vue._update @ vue.runtime.esm.js:3824 updateComponent @ vue.runtime.esm.js:3930 Watcher.get @ vue.runtime.esm.js:3501 Watcher.run @ vue.runtime.esm.js:3577 flushSchedulerQueue @ vue.runtime.esm.js:4180 eval @ vue.runtime.esm.js:3198 flushCallbacks @ vue.runtime.esm.js:3120 Promise.then timerFunc @ vue.runtime.esm.js:3145 nextTick @ vue.runtime.esm.js:3210 queueWatcher @ vue.runtime.esm.js:4266 Watcher.update @ vue.runtime.esm.js:3568 Vue.$forceUpdate @ vue.runtime.esm.js:3849 forceRender_1 @ vue.runtime.esm.js:2816 eval @ vue.runtime.esm.js:2836 eval @ vue.runtime.esm.js:370 Promise.then resolveAsyncComponent @ vue.runtime.esm.js:2856 createComponent @ vue.runtime.esm.js:4531 _createElement @ vue.runtime.esm.js:2971 createElement$1 @ vue.runtime.esm.js:2921 vm._c @ vue.runtime.esm.js:2694 render @ cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"3bd8c2c6-vue-loader-template"}!./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/mainPage.vue?vue&type=template&id=0be33bfc&scoped=true:28 Vue._render @ vue.runtime.esm.js:2739 updateComponent @ vue.runtime.esm.js:3930 Watcher.get @ vue.runtime.esm.js:3501 Watcher @ vue.runtime.esm.js:3491 mountComponent @ vue.runtime.esm.js:3947 Vue.$mount @ vue.runtime.esm.js:8830 init @ vue.runtime.esm.js:4464 merged @ vue.runtime.esm.js:4618 createComponent @ vue.runtime.esm.js:6624 createElm @ vue.runtime.esm.js:6578 updateChildren @ vue.runtime.esm.js:6873 patchVnode @ vue.runtime.esm.js:6966 updateChildren @ vue.runtime.esm.js:6840 patchVnode @ vue.runtime.esm.js:6966 patch @ vue.runtime.esm.js:7134 Vue._update @ vue.runtime.esm.js:3824 updateComponent @ vue.runtime.esm.js:3930 Watcher.get @ vue.runtime.esm.js:3501 Watcher.run @ vue.runtime.esm.js:3577 flushSchedulerQueue @ vue.runtime.esm.js:4180 eval @ vue.runtime.esm.js:3198 flushCallbacks @ vue.runtime.esm.js:3120 Promise.then timerFunc @ vue.runtime.esm.js:3145 nextTick @ vue.runtime.esm.js:3210 queueWatcher @ vue.runtime.esm.js:4266 Watcher.update @ vue.runtime.esm.js:3568 Dep.notify @ vue.runtime.esm.js:790 reactiveSetter @ vue.runtime.esm.js:1021 eval @ vue-router.esm.js:3013 eval @ vue-router.esm.js:3012 updateRoute @ vue-router.esm.js:2422 eval @ vue-router.esm.js:2271 eval @ vue-router.esm.js:2410 step @ vue-router.esm.js:2092 step @ vue-router.esm.js:2099 step @ vue-router.esm.js:2099 runQueue @ vue-router.esm.js:2103 eval @ vue-router.esm.js:2405 step @ vue-router.esm.js:2092 eval @ vue-router.esm.js:2096 eval @ vue-router.esm.js:2392 eval @ vue-router.esm.js:2135 eval @ vue-router.esm.js:2211 Promise.then eval @ vue-router.esm.js:2158 eval @ vue-router.esm.js:2179 eval @ vue-router.esm.js:2179 flatMapComponents @ vue-router.esm.js:2178 eval @ vue-router.esm.js:2114 iterator @ vue-router.esm.js:2370 step @ vue-router.esm.js:2095 step @ vue-router.esm.js:2099 step @ vue-router.esm.js:2099 runQueue @ vue-router.esm.js:2103 confirmTransition @ vue-router.esm.js:2400 transitionTo @ vue-router.esm.js:2268 init @ vue-router.esm.js:3004 beforeCreate @ vue-router.esm.js:1306 invokeWithErrorHandling @ vue.runtime.esm.js:3072 callHook$1 @ vue.runtime.esm.js:4087 Vue._init @ vue.runtime.esm.js:5745 Vue @ vue.runtime.esm.js:5818 eval @ main.js:26 ./src/main.js @ app.js:1304 __webpack_require__ @ app.js:854 fn @ app.js:151 1 @ app.js:1377 __webpack_require__ @ app.js:854 checkDeferredModules @ app.js:46 (anonymous) @ app.js:994 (anonymous) @ app.js:997 main.js:26 [Violation] Added non-passive event listener to a scroll-blocking 'mousewheel' event. Consider marking event handler as 'passive' to make the page more responsive. See https://www.chromestatus.com/feature/5745543795965952 addEventListener @ event.js:201 mountSingleDOMEventListener @ HandlerProxy.js:412 eval @ HandlerProxy.js:359 each @ util.js:300 mountLocalDOMEventListeners @ HandlerProxy.js:358 HandlerDomProxy @ HandlerProxy.js:486 ZRender @ zrender.js:138 init @ zrender.js:49 ECharts @ echarts.js:206 init @ echarts.js:1928 mounted @ cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/components/page2/barChart.vue?vue&type=script&lang=js:189 invokeWithErrorHandling @ vue.runtime.esm.js:3072 callHook$1 @ vue.runtime.esm.js:4087 insert @ vue.runtime.esm.js:4480 invokeInsertHook @ vue.runtime.esm.js:6999 patch @ vue.runtime.esm.js:7213 Vue._update @ vue.runtime.esm.js:3824 updateComponent @ vue.runtime.esm.js:3930 Watcher.get @ vue.runtime.esm.js:3501 Watcher.run @ vue.runtime.esm.js:3577 flushSchedulerQueue @ vue.runtime.esm.js:4180 eval @ vue.runtime.esm.js:3198 flushCallbacks @ vue.runtime.esm.js:3120 Promise.then timerFunc @ vue.runtime.esm.js:3145 nextTick @ vue.runtime.esm.js:3210 queueWatcher @ vue.runtime.esm.js:4266 Watcher.update @ vue.runtime.esm.js:3568 Vue.$forceUpdate @ vue.runtime.esm.js:3849 forceRender_1 @ vue.runtime.esm.js:2816 eval @ vue.runtime.esm.js:2836 eval @ vue.runtime.esm.js:370 Promise.then resolveAsyncComponent @ vue.runtime.esm.js:2856 createComponent @ vue.runtime.esm.js:4531 _createElement @ vue.runtime.esm.js:2971 createElement$1 @ vue.runtime.esm.js:2921 vm._c @ vue.runtime.esm.js:2694 render @ cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"3bd8c2c6-vue-loader-template"}!./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/mainPage.vue?vue&type=template&id=0be33bfc&scoped=true:48 Vue._render @ vue.runtime.esm.js:2739 updateComponent @ vue.runtime.esm.js:3930 Watcher.get @ vue.runtime.esm.js:3501 Watcher @ vue.runtime.esm.js:3491 mountComponent @ vue.runtime.esm.js:3947 Vue.$mount @ vue.runtime.esm.js:8830 init @ vue.runtime.esm.js:4464 merged @ vue.runtime.esm.js:4618 createComponent @ vue.runtime.esm.js:6624 createElm @ vue.runtime.esm.js:6578 updateChildren @ vue.runtime.esm.js:6873 patchVnode @ vue.runtime.esm.js:6966 updateChildren @ vue.runtime.esm.js:6840 patchVnode @ vue.runtime.esm.js:6966 patch @ vue.runtime.esm.js:7134 Vue._update @ vue.runtime.esm.js:3824 updateComponent @ vue.runtime.esm.js:3930 Watcher.get @ vue.runtime.esm.js:3501 Watcher.run @ vue.runtime.esm.js:3577 flushSchedulerQueue @ vue.runtime.esm.js:4180 eval @ vue.runtime.esm.js:3198 flushCallbacks @ vue.runtime.esm.js:3120 Promise.then timerFunc @ vue.runtime.esm.js:3145 nextTick @ vue.runtime.esm.js:3210 queueWatcher @ vue.runtime.esm.js:4266 Watcher.update @ vue.runtime.esm.js:3568 Dep.notify @ vue.runtime.esm.js:790 reactiveSetter @ vue.runtime.esm.js:1021 eval @ vue-router.esm.js:3013 eval @ vue-router.esm.js:3012 updateRoute @ vue-router.esm.js:2422 eval @ vue-router.esm.js:2271 eval @ vue-router.esm.js:2410 step @ vue-router.esm.js:2092 step @ vue-router.esm.js:2099 step @ vue-router.esm.js:2099 runQueue @ vue-router.esm.js:2103 eval @ vue-router.esm.js:2405 step @ vue-router.esm.js:2092 eval @ vue-router.esm.js:2096 eval @ vue-router.esm.js:2392 eval @ vue-router.esm.js:2135 eval @ vue-router.esm.js:2211 Promise.then eval @ vue-router.esm.js:2158 eval @ vue-router.esm.js:2179 eval @ vue-router.esm.js:2179 flatMapComponents @ vue-router.esm.js:2178 eval @ vue-router.esm.js:2114 iterator @ vue-router.esm.js:2370 step @ vue-router.esm.js:2095 step @ vue-router.esm.js:2099 step @ vue-router.esm.js:2099 runQueue @ vue-router.esm.js:2103 confirmTransition @ vue-router.esm.js:2400 transitionTo @ vue-router.esm.js:2268 init @ vue-router.esm.js:3004 beforeCreate @ vue-router.esm.js:1306 invokeWithErrorHandling @ vue.runtime.esm.js:3072 callHook$1 @ vue.runtime.esm.js:4087 Vue._init @ vue.runtime.esm.js:5745 Vue @ vue.runtime.esm.js:5818 eval @ main.js:26 ./src/main.js @ app.js:1304 __webpack_require__ @ app.js:854 fn @ app.js:151 1 @ app.js:1377 __webpack_require__ @ app.js:854 checkDeferredModules @ app.js:46 (anonymous) @ app.js:994 (anonymous) @ app.js:997 main.js:26 [Violation] Added non-passive event listener to a scroll-blocking 'mousewheel' event. Consider marking event handler as 'passive' to make the page more responsive. See https://www.chromestatus.com/feature/5745543795965952 addEventListener @ event.js:201 mountSingleDOMEventListener @ HandlerProxy.js:412 eval @ HandlerProxy.js:359 each @ util.js:300 mountLocalDOMEventListeners @ HandlerProxy.js:358 HandlerDomProxy @ HandlerProxy.js:486 ZRender @ zrender.js:138 init @ zrender.js:49 ECharts @ echarts.js:206 init @ echarts.js:1928 mounted @ cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/components/page2/pieChart03.vue?vue&type=script&lang=js:21 invokeWithErrorHandling @ vue.runtime.esm.js:3072 callHook$1 @ vue.runtime.esm.js:4087 insert @ vue.runtime.esm.js:4480 invokeInsertHook @ vue.runtime.esm.js:6999 patch @ vue.runtime.esm.js:7213 Vue._update @ vue.runtime.esm.js:3824 updateComponent @ vue.runtime.esm.js:3930 Watcher.get @ vue.runtime.esm.js:3501 Watcher.run @ vue.runtime.esm.js:3577 flushSchedulerQueue @ vue.runtime.esm.js:4180 eval @ vue.runtime.esm.js:3198 flushCallbacks @ vue.runtime.esm.js:3120 Promise.then timerFunc @ vue.runtime.esm.js:3145 nextTick @ vue.runtime.esm.js:3210 queueWatcher @ vue.runtime.esm.js:4266 Watcher.update @ vue.runtime.esm.js:3568 Vue.$forceUpdate @ vue.runtime.esm.js:3849 forceRender_1 @ vue.runtime.esm.js:2816 eval @ vue.runtime.esm.js:2836 eval @ vue.runtime.esm.js:370 Promise.then resolveAsyncComponent @ vue.runtime.esm.js:2856 createComponent @ vue.runtime.esm.js:4531 _createElement @ vue.runtime.esm.js:2971 createElement$1 @ vue.runtime.esm.js:2921 vm._c @ vue.runtime.esm.js:2694 render @ cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"3bd8c2c6-vue-loader-template"}!./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/mainPage.vue?vue&type=template&id=0be33bfc&scoped=true:109 Vue._render @ vue.runtime.esm.js:2739 updateComponent @ vue.runtime.esm.js:3930 Watcher.get @ vue.runtime.esm.js:3501 Watcher @ vue.runtime.esm.js:3491 mountComponent @ vue.runtime.esm.js:3947 Vue.$mount @ vue.runtime.esm.js:8830 init @ vue.runtime.esm.js:4464 merged @ vue.runtime.esm.js:4618 createComponent @ vue.runtime.esm.js:6624 createElm @ vue.runtime.esm.js:6578 updateChildren @ vue.runtime.esm.js:6873 patchVnode @ vue.runtime.esm.js:6966 updateChildren @ vue.runtime.esm.js:6840 patchVnode @ vue.runtime.esm.js:6966 patch @ vue.runtime.esm.js:7134 Vue._update @ vue.runtime.esm.js:3824 updateComponent @ vue.runtime.esm.js:3930 Watcher.get @ vue.runtime.esm.js:3501 Watcher.run @ vue.runtime.esm.js:3577 flushSchedulerQueue @ vue.runtime.esm.js:4180 eval @ vue.runtime.esm.js:3198 flushCallbacks @ vue.runtime.esm.js:3120 Promise.then timerFunc @ vue.runtime.esm.js:3145 nextTick @ vue.runtime.esm.js:3210 queueWatcher @ vue.runtime.esm.js:4266 Watcher.update @ vue.runtime.esm.js:3568 Dep.notify @ vue.runtime.esm.js:790 reactiveSetter @ vue.runtime.esm.js:1021 eval @ vue-router.esm.js:3013 eval @ vue-router.esm.js:3012 updateRoute @ vue-router.esm.js:2422 eval @ vue-router.esm.js:2271 eval @ vue-router.esm.js:2410 step @ vue-router.esm.js:2092 step @ vue-router.esm.js:2099 step @ vue-router.esm.js:2099 runQueue @ vue-router.esm.js:2103 eval @ vue-router.esm.js:2405 step @ vue-router.esm.js:2092 eval @ vue-router.esm.js:2096 eval @ vue-router.esm.js:2392 eval @ vue-router.esm.js:2135 eval @ vue-router.esm.js:2211 Promise.then eval @ vue-router.esm.js:2158 eval @ vue-router.esm.js:2179 eval @ vue-router.esm.js:2179 flatMapComponents @ vue-router.esm.js:2178 eval @ vue-router.esm.js:2114 iterator @ vue-router.esm.js:2370 step @ vue-router.esm.js:2095 step @ vue-router.esm.js:2099 step @ vue-router.esm.js:2099 runQueue @ vue-router.esm.js:2103 confirmTransition @ vue-router.esm.js:2400 transitionTo @ vue-router.esm.js:2268 init @ vue-router.esm.js:3004 beforeCreate @ vue-router.esm.js:1306 invokeWithErrorHandling @ vue.runtime.esm.js:3072 callHook$1 @ vue.runtime.esm.js:4087 Vue._init @ vue.runtime.esm.js:5745 Vue @ vue.runtime.esm.js:5818 eval @ main.js:26 ./src/main.js @ app.js:1304 __webpack_require__ @ app.js:854 fn @ app.js:151 1 @ app.js:1377 __webpack_require__ @ app.js:854 checkDeferredModules @ app.js:46 (anonymous) @ app.js:994 (anonymous) @ app.js:997 cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/components/areaChart.vue?vue&type=script&lang=js:22 报警信息此时: {__ob__: Observer} cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/components/page2/barChart.vue?vue&type=script&lang=js:22 报警信息此时: {__ob__: Observer} main.js:26 加载 3D 模型失败: SyntaxError: Unexpected token '<', "<!DOCTYPE "... is not valid JSON at JSON.parse (<anonymous>) at GLTFLoader.parse (GLTFLoader.js:387:17) at Object.eval [as onLoad] (GLTFLoader.js:249:11) at eval (three.core.js:44796:38) eval @ cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/mainPage.vue?vue&type=script&lang=js:132 _onError @ GLTFLoader.js:225 eval @ GLTFLoader.js:259 eval @ three.core.js:44796 Promise.then load @ three.core.js:44784 load @ GLTFLoader.js:245 initThreeModel @ cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/mainPage.vue?vue&type=script&lang=js:121 eval @ cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/mainPage.vue?vue&type=script&lang=js:153 eval @ vue.runtime.esm.js:3198 flushCallbacks @ vue.runtime.esm.js:3120 Promise.then timerFunc @ vue.runtime.esm.js:3145 nextTick @ vue.runtime.esm.js:3210 Vue.$nextTick @ vue.runtime.esm.js:2718 mounted @ iview.js:20290 invokeWithErrorHandling @ vue.runtime.esm.js:3072 callHook$1 @ vue.runtime.esm.js:4087 insert @ vue.runtime.esm.js:4480 invokeInsertHook @ vue.runtime.esm.js:6999 patch @ vue.runtime.esm.js:7213 Vue._update @ vue.runtime.esm.js:3824 updateComponent @ vue.runtime.esm.js:3930 Watcher.get @ vue.runtime.esm.js:3501 Watcher.run @ vue.runtime.esm.js:3577 flushSchedulerQueue @ vue.runtime.esm.js:4180 eval @ vue.runtime.esm.js:3198 flushCallbacks @ vue.runtime.esm.js:3120 Promise.then timerFunc @ vue.runtime.esm.js:3145 nextTick @ vue.runtime.esm.js:3210 queueWatcher @ vue.runtime.esm.js:4266 Watcher.update @ vue.runtime.esm.js:3568 Dep.notify @ vue.runtime.esm.js:790 reactiveSetter @ vue.runtime.esm.js:1021 eval @ vue-router.esm.js:3013 eval @ vue-router.esm.js:3012 updateRoute @ vue-router.esm.js:2422 eval @ vue-router.esm.js:2271 eval @ vue-router.esm.js:2410 step @ vue-router.esm.js:2092 step @ vue-router.esm.js:2099 step @ vue-router.esm.js:2099 runQueue @ vue-router.esm.js:2103 eval @ vue-router.esm.js:2405 step @ vue-router.esm.js:2092 eval @ vue-router.esm.js:2096 eval @ vue-router.esm.js:2392 eval @ vue-router.esm.js:2135 eval @ vue-router.esm.js:2211 Promise.then eval @ vue-router.esm.js:2158 eval @ vue-router.esm.js:2179 eval @ vue-router.esm.js:2179 flatMapComponents @ vue-router.esm.js:2178 eval @ vue-router.esm.js:2114 iterator @ vue-router.esm.js:2370 step @ vue-router.esm.js:2095 step @ vue-router.esm.js:2099 step @ vue-router.esm.js:2099 runQueue @ vue-router.esm.js:2103 confirmTransition @ vue-router.esm.js:2400 transitionTo @ vue-router.esm.js:2268 init @ vue-router.esm.js:3004 beforeCreate @ vue-router.esm.js:1306 invokeWithErrorHandling @ vue.runtime.esm.js:3072 callHook$1 @ vue.runtime.esm.js:4087 Vue._init @ vue.runtime.esm.js:5745 Vue @ vue.runtime.esm.js:5818 eval @ main.js:26 ./src/main.js @ app.js:1304 __webpack_require__ @ app.js:854 fn @ app.js:151 1 @ app.js:1377 __webpack_require__ @ app.js:854 checkDeferredModules @ app.js:46 (anonymous) @ app.js:994 (anonymous) @ app.js:997
最新发布
11-11
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值