Cors 三个JS交叉源Collada文件
当试图从我的服务器加载Collada文件时,我遇到了跨源错误,因此无法访问我的文件 链接:Cors 三个JS交叉源Collada文件,cors,cross-domain,Cors,Cross Domain,当试图从我的服务器加载Collada文件时,我遇到了跨源错误,因此无法访问我的文件 链接: var script=document.createElement(“脚本”); script.type=“text/javascript”; script.src=”https://hydle.000webhostapp.com/host/obj/stand.dae"; script.integrity=“sha384 tSi+YsgNwyohDGfW/VhY51IK3RKAPYDcj1sNXJ16o
var script=document.createElement(“脚本”);
script.type=“text/javascript”;
script.src=”https://hydle.000webhostapp.com/host/obj/stand.dae";
script.integrity=“sha384 tSi+YsgNwyohDGfW/VhY51IK3RKAPYDcj1sNXJ16oRAyDP++K0NCzSCUW78EMFmf”;
script.crossOrigin=“匿名”;
document.getElementsByTagName(“head”)[0].appendChild(脚本)代码>不要尝试将collada文件附加为脚本,请尝试以下操作:
var url = "https://hydle.000webhostapp.com/host/obj/stand.dae";
var loader = new THREE.ColladaLoader();
loader.setCrossOrigin("anonymous");
loader.load(url, function (collada) {
scene.add(collada.scene);
});
问题:
默认情况下,许多Apache服务器(如您的服务器)已禁用与其他服务器的资源共享。在您的情况下,https://hydle.000webhostapp.com
不允许与共享.dae文件https://codepen.io
,这就是您出现此错误的原因
解决方案1:
如果将代码和.dae文件托管在同一台服务器上,则不会遇到任何CORS问题,因为它们都具有相同的来源
解决方案2:
你需要上传一个PHP脚本到你的服务器,允许资源共享到特定的域。我不会为您编写全部代码,但它是这样的:
script.php:
<?php
header("Access-Control-Allow-Origin: https://codepen.io");
echo readfile("/path/to/file.dae");
?>
以这种方式访问script.php
将返回file.dae
的内容。由于安全问题,我不推荐解决方案2,但这正是您所要求的。有关PHP的readfile的更多信息,请阅读。这不是一个问题。这是CORS的问题。您需要将服务器设置为允许与https://codepen.io
如果您希望您的资产在那里可用。如何设置服务器以允许CORS?这取决于您运行的服务器类型。它是否运行php、Node或其他?您还应该阅读这篇@Marquizzo无法找到与Javascript一起使用的清晰解决方案的文章。对于服务器类型,我只是将文件放在那里,以便在其他网站上使用,这是因为您的服务器不允许与其他网站共享资源。您必须修改服务器设置以允许资源共享。它可能不会是一个JavaScript解决方案。@Marquizzo我想这就像你说的,但老实说,我不知道怎么做。。你知道怎么做吗?谢谢你的回复,但那没用change@Devastarius您正在运行Web服务器吗?Three.js需要一个Web服务器才能运行。
script.src = "https://hydle.000webhostapp.com/host/obj/script.php";