“仅HTTP支持跨域请求,”加载本地文件时出错

kpbpu008  于 2022-09-18  发布在  Java
关注(0)|答案(3)|浏览(158)

我正在尝试使用JSONLoader将3D模型加载到Three.js中,而该3D模型与整个网站位于同一目录中。

我收到了"Cross origin requests are only supported for HTTP."错误,但我不知道是什么原因造成的,也不知道如何修复它。

wgmfuz8q

wgmfuz8q1#

我的水晶球显示您正在使用file://C:/加载模型,这与错误消息保持一致,因为它们不是http://

因此,您可以在本地PC上安装Web服务器,或者将模型上传到其他地方并使用jsonp并将url更改为http://example.com/path/to/model

原点在RFC-6454中定义为

...they have the same
   scheme, host, and port.  (See Section 4 for full details.)

因此,即使您的文件来自同一主机(localhost),但只要方案不同(http/file),它们就会被视为不同的来源。

njthzxwz

njthzxwz2#

只是明确地说-是的,错误是说您不能将浏览器直接指向file://some/path/some.html

以下是一些快速启动本地Web服务器以让浏览器呈现本地文件的选项

Python2

如果您安装了Python...

1.使用命令cd /path/to/your/folder将目录切换到您的文件some.html所在的文件夹
1.使用命令python -m SimpleHTTPServer启动一台Python Web服务器

这将启动一个Web服务器来托管http://localhost:8000上的整个目录列表

1.您可以使用提供链接的自定义端口python -m SimpleHTTPServer 9000http://localhost:9000

这种方法内置于任何Python安装中。

Python3

执行相同的步骤,但使用以下命令代替python3 -m http.server

Node.js

或者,如果您需要响应更快的设置,并且已经使用了NodeJS...

1.输入npm install -g http-server安装http-server
1.切换到1d10d1e所在的工作目录
1.发出http-server -c-1命令启动您的http服务器

这将启动一个Node.js HTTPD,它将目录中的文件作为静态文件提供,可从http://localhost:8080访问

Ruby

如果您首选的语言是Ruby...Ruby之神说,这也很管用:

ruby -run -e httpd . -p 8080

PHP

当然,PHP也有自己的解决方案。

php -S localhost:8000
cyvaqqii

cyvaqqii3#

在Chrome中,您可以使用此标志:

--allow-file-access-from-files

Read more here.

相关问题