STLloader预览服务端stl文件

在使用Three.js的STLLoader时遇到ContentSecurityPolicy(CSP)错误,提示不允许从服务器地址加载资源。问题出现在尝试加载远程STL文件时,由于CSP策略限制。解决方案可能涉及调整浏览器或服务器的CSP设置,允许从指定源加载内容。同时,示例代码显示大部分DEMO使用本地地址加载,不确定是否支持服务器地址。为了解决这个问题,开发者需要检查并更新CSP策略,或者考虑将STL文件存储在本地以符合CSP规定。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近写项目的时候遇到了一个问题 就是我使用STLloader时 loader.load("服务端地址",function)

会报csp错误

Content Security Policy: 页面设置阻止读取位于 blob:http://localhost:8080/06f90dbb-6fa5-4310-aad0-7a85b227f479 的一项资源("connect-src")。

想问一下大佬们这种情况怎么解决

还有就是我看网上大部分demo  loader.load('本地地址') 所以我不知道能否加载服务器地址文件

<script type="text/javascript" src="${path}js/ux/udpdf/index.js" ></script>
<script  src="${path}js/ux/udpdf/arraybutter.js" ></script>
<script  src="${path }/js/ux/udpdf/STLLoader.js" type="module"></script>
<script  src="${path }/js/ux/udpdf/TrackballControls.js" type="module"></script>
<script  src="${path }/js/ux/udpdf/three.module.js" type="module"></script>
<link type="text/css" rel="stylesheet" href="${path }/js/ux/udpdf/main.css">

<script type="module">

   //注意:
   //TrackballControls.js 和 TDSLoader.js 都引用了 three.module.js,特别注意引用的路径

   import * as THREE from '/threejs/js/three.module.js';
   import { TrackballControls } from '/threejs/js/TrackballControls.js';
   import { STLLoader } from '/threejs/js/STLLoader.js';

   var container, controls;
   var camera, scene, renderer;

   previewajax()
   init();
   animate();


   function resize() {
      camera.aspect = window.innerWidth / window.innerHeight;
      camera.updateProjectionMatrix();
      renderer.setSize(window.innerWidth, window.innerHeight);
   }

   function animate() {
      controls.update();
      renderer.render(scene, camera);
      requestAnimationFrame(animate);
   }
   //类型转换
   function blobchange(data){
      debugger
      var blob = new Blob([data], {
         type: 'application/vnd.ms-pkistl;charset=utf-8'
      })
      var fileURL = URL.createObjectURL(blob)
      init(fileURL);

   }
       //请求接口
   function previewajax(){
      $.ajax({
         type : "get",
         url : path+"stlfile/queryStlPathById.do",
         dataType : "arraybuffer",
         data : {"id" : showOne.id,"userid" : userid},
         success : function(data) {
            blobchange(data)
         }
      });

   }

   function init(fileURL) {
      console.log(fileURL)

      container = document.createElement('div');
      $("#fujian_right_stl").html(container);
      camera = new THREE.PerspectiveCamera(60, window.innerWidth / window.innerHeight, 0.1, 10);
      camera.position.z = 2;
      scene = new THREE.Scene();
      scene.add(new THREE.HemisphereLight());
      var directionalLight = new THREE.DirectionalLight(0xffeedd); // 0xFFFFFF
      directionalLight.position.set(0, 0, 2);
      scene.add(directionalLight);

      // ASCII file
      var loader = new STLLoader();
      loader.load(fileURL, function (geometry) {
         var mat = new THREE.MeshLambertMaterial({ color: '0x00ffff' });//{ color: 0x00ffff }
         var mesh = new THREE.Mesh(geometry, mat);
         mesh.rotation.x = -0.5 * Math.PI; //将模型摆正
         mesh.scale.set(0.1, 0.1, 0.1); //缩放
         geometry.center(); //居中显示
         scene.add(mesh);
      })




      renderer = new THREE.WebGLRenderer();
      renderer.setPixelRatio(window.devicePixelRatio);
      renderer.setSize(window.innerWidth, window.innerHeight);
      container.appendChild(renderer.domElement);
      controls = new TrackballControls(camera, renderer.domElement);
      window.addEventListener('resize', resize, false);
   }

</script>
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值