我正在尝试使用JSONLoader将3D模型加载到Three.js中,而该3D模型与整个网站位于同一目录中。
JSONLoader
我收到了"Cross origin requests are only supported for HTTP."错误,但我不知道是什么原因造成的,也不知道如何修复它。
"Cross origin requests are only supported for HTTP."
wgmfuz8q1#
我的水晶球显示您正在使用file://或C:/加载模型,这与错误消息保持一致,因为它们不是http://
file://
C:/
http://
因此,您可以在本地PC上安装Web服务器,或者将模型上传到其他地方并使用jsonp并将url更改为http://example.com/path/to/model
jsonp
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),它们就会被视为不同的来源。
localhost
http
file
njthzxwz2#
只是明确地说-是的,错误是说您不能将浏览器直接指向file://some/path/some.html
file://some/path/some.html
以下是一些快速启动本地Web服务器以让浏览器呈现本地文件的选项
如果您安装了Python...
1.使用命令cd /path/to/your/folder将目录切换到您的文件some.html所在的文件夹1.使用命令python -m SimpleHTTPServer启动一台Python Web服务器
cd /path/to/your/folder
some.html
python -m SimpleHTTPServer
这将启动一个Web服务器来托管http://localhost:8000上的整个目录列表
http://localhost:8000
1.您可以使用提供链接的自定义端口python -m SimpleHTTPServer 9000:http://localhost:9000
python -m SimpleHTTPServer 9000
http://localhost:9000
这种方法内置于任何Python安装中。
执行相同的步骤,但使用以下命令代替python3 -m http.server
python3 -m http.server
或者,如果您需要响应更快的设置,并且已经使用了NodeJS...
1.输入npm install -g http-server安装http-server1.切换到1d10d1e所在的工作目录1.发出http-server -c-1命令启动您的http服务器
npm install -g http-server
http-server
http-server -c-1
这将启动一个Node.js HTTPD,它将目录中的文件作为静态文件提供,可从http://localhost:8080访问
http://localhost:8080
如果您首选的语言是Ruby...Ruby之神说,这也很管用:
ruby -run -e httpd . -p 8080
当然,PHP也有自己的解决方案。
php -S localhost:8000
cyvaqqii3#
在Chrome中,您可以使用此标志:
--allow-file-access-from-files
Read more here.
3条答案
按热度按时间wgmfuz8q1#
我的水晶球显示您正在使用
file://
或C:/
加载模型,这与错误消息保持一致,因为它们不是http://
因此,您可以在本地PC上安装Web服务器,或者将模型上传到其他地方并使用
jsonp
并将url更改为http://example.com/path/to/model
原点在RFC-6454中定义为
因此,即使您的文件来自同一主机(
localhost
),但只要方案不同(http
/file
),它们就会被视为不同的来源。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 9000
:http://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之神说,这也很管用:
PHP
当然,PHP也有自己的解决方案。
cyvaqqii3#
在Chrome中,您可以使用此标志:
Read more here.