我试图用JSONLoader
将一个3D模型加载到Three.js中,该3D模型与整个网站位于同一个目录中。
我收到“Cross origin requests are only supported for HTTP.”
错误,但我不知道是什么原因导致的,也不知道如何修复它。
My crystal ball表示您正在使用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
),它们也被视为不同的来源。
明确地说-是的,错误是说您不能将浏览器直接指向文件://some/path/some.html
以下是一些选项,可以快速调整本地web服务器,让浏览器呈现本地文件
如果您安装了Python.。。
>
使用命令cd/path/to/your/folder
将目录更改为文件some.html
或文件所在的文件夹
使用命令python-m simplehttpserver
启动Python web服务器
这将启动web服务器,在http://localhost:8000
中托管整个目录列表
任何Python安装都内置了这种方法。
执行相同的步骤,但使用以下命令python3-M http.server
或者,如果您需要响应更快的设置,并且已经使用了NodeJS.。。
>
通过键入npm install-g http-server
安装http-server
切换到您的工作目录中,您的some.html
位于该目录中
通过发出http-server-c-1
启动http服务器
这将生成一个node.js httpd,它将目录中的文件作为静态文件提供服务,可从http://localhost:8080
访问
如果您更喜欢的语言是Ruby.。。Ruby之神说这也是可行的:
ruby -run -e httpd . -p 8080
当然PHP也有它的解决方案。
php -S localhost:8000
在Chrome中,您可以使用此标志:
--allow-file-access-from-files
在这里阅读更多。