我正在尝试将 3D 模型加载到 Three.js 中JSONLoader
,并且该 3D 模型与整个网站位于同一目录中。
我收到"Cross origin requests are only supported for HTTP."
错误,但我不知道是什么导致了它,也不知道如何修复它。
我正在尝试将 3D 模型加载到 Three.js 中JSONLoader
,并且该 3D 模型与整个网站位于同一目录中。
我收到"Cross origin requests are only supported for HTTP."
错误,但我不知道是什么导致了它,也不知道如何修复它。
我的水晶球说您正在使用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
),它们就会被视为不同的来源。
明确地说 - 是的,错误是说您不能将浏览器直接指向 file://some/path/some.html
这里有一些选项可以快速启动本地 Web 服务器,让您的浏览器呈现本地文件
如果你安装了 Python...
some.html
使用命令将目录更改为您的文件或文件所在的文件夹cd /path/to/your/folder
使用命令启动 Python Web 服务器 python -m SimpleHTTPServer
这将启动一个 Web 服务器来托管您的整个目录列表 http://localhost:8000
python -m SimpleHTTPServer 9000
为您提供链接:http://localhost:9000
这种方法内置于任何 Python 安装中。
执行相同的步骤,但使用以下命令代替 python3 -m http.server
或者,如果您需要更灵敏的设置并且已经使用 nodejs ......
http-server
通过键入安装npm install -g http-server
切换到你的工作目录,你some.html
住的地方
通过发出启动您的 http 服务器 http-server -c-1
这会启动一个 Node.js httpd,它将您目录中的文件作为静态文件提供 http://localhost:8080
如果您的首选语言是 Ruby ...... Ruby Gods 说这也有效:
ruby -run -e httpd . -p 8080
当然PHP也有它的解决方案。
php -S localhost:8000
今天跑到这个。
我写了一些看起来像这样的代码:
app.controller('ctrlr', function($scope, $http){
$http.get('localhost:3000').success(function(data) {
$scope.stuff = data;
});
});
...但它应该是这样的:
app.controller('ctrlr', function($scope, $http){
$http.get('http://localhost:3000').success(function(data) {
$scope.stuff = data;
});
});
唯一的区别是缺少http://
第二段代码。
只是想把它放在那里,以防其他人有类似的问题。
只需将 url 更改为http://localhost
而不是localhost
. 如果您从本地打开 html 文件,您应该创建一个本地服务器来提供该 html 文件,最简单的方法是使用Web Server for Chrome
. 这将解决问题。