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

新手上路,请多包涵

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

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

原文由 corazza 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 608
2 个回答

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

因此,您可以在本地 PC 中安装网络服务器或将模型上传到其他地方并使用 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 ),它们就会被视为不同的来源。

原文由 Andreas Wong 发布,翻译遵循 CC BY-SA 4.0 许可协议

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

这里有一些选项可以快速启动本地 Web 服务器,让您的浏览器呈现本地文件

蟒蛇2

如果你安装了 Python…

  1. 使用命令将目录更改为文件 some.html 或文件所在的文件夹 cd /path/to/your/folder

  2. 使用命令启动 Python Web 服务器 python -m SimpleHTTPServer

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

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

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

蟒蛇3

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

VS代码

如果您使用的是 Visual Studio Code ,则可以安装提供本地 Web 服务器环境的 Live Server 扩展。

节点.js

或者,如果您需要响应速度更快的设置并且已经在使用 nodejs …

  1. 安装 http-server 输入 npm install -g http-server

  2. 切换到您的工作目录,您的 some.html 所在的目录

  3. 通过发出 http-server -c-1 启动你的http服务器

这会启动一个 Node.js httpd,它将您目录中的文件作为静态文件提供服务,可从 http://localhost:8080

红宝石

如果您喜欢的语言是 Ruby … Ruby Gods 说这也行得通:

 ruby -run -e httpd . -p 8080

PHP

当然PHP也有它的解决办法。

 php -S localhost:8000

原文由 Scott Stensland 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题