我试图加载一个3D模型,存储在我的电脑本地,到Three.js与JSONLoader, 3D模型是在同一目录下,作为整个网站。
我得到了“跨起源请求只支持HTTP.”错误,但我不知道是什么原因导致它也不知道如何修复它。
我试图加载一个3D模型,存储在我的电脑本地,到Three.js与JSONLoader, 3D模型是在同一目录下,作为整个网站。
我得到了“跨起源请求只支持HTTP.”错误,但我不知道是什么原因导致它也不知道如何修复它。
当前回答
对我来说,最快的方法是: 对于windows用户在Firefox上运行文件的问题解决了,或者 如果你想使用chrome,对我来说最简单的方法是安装Python 3,然后从命令提示符运行命令Python -m http。服务器,然后访问http://localhost:8000/,然后导航到您的文件
python -m http.server
其他回答
我的水晶球显示,您正在使用文件://或C:/加载模型,这对错误消息保持真实,因为它们不是http://
因此,您可以在本地PC上安装web服务器,也可以将模型上传到其他地方,使用jsonp并将url更改为http://example.com/path/to/model
RFC-6454中将Origin定义为
...they have the same
scheme, host, and port. (See Section 4 for full details.)
因此,即使您的文件起源于同一主机(localhost),但只要方案不同(http / file),它们就被视为不同的起源。
只是显式-是的,错误是说你不能将浏览器直接指向file://some/path/some.html
这里有一些选项可以快速启动本地web服务器,让浏览器呈现本地文件
Python 2
如果你安装了Python…
使用cd /path/to/your/folder命令将目录更改为文件some.html所在的文件夹 使用Python -m SimpleHTTPServer命令启动一个Python web服务器
这将启动一个web服务器,在http://localhost:8000上托管您的整个目录列表
你可以使用自定义端口python -m SimpleHTTPServer 9000给你链接:http://localhost:9000
这种方法内置于任何Python安装中。
Python 3
执行相同的步骤,但使用以下命令代替python3 -m http.server
VSCode
如果你正在使用Visual Studio Code,你可以安装Live Server扩展,它提供了一个本地web服务器环境。
node . js
或者,如果你需要一个更灵敏的设置,并且已经使用了nodejs…
通过输入npm Install -g http-server安装http-server 切换到你的工作目录,yoursome.html所在的目录 通过发出http-server -c-1启动http服务器
这将启动一个Node.js httpd,它将目录中的文件作为可从http://localhost:8080访问的静态文件提供
Ruby
如果你的首选语言是Ruby…红宝石之神说这也管用:
ruby -run -e httpd . -p 8080
PHP
当然,PHP也有它的解决方案。
php -S localhost:8000
对我来说,最快的方法是: 对于windows用户在Firefox上运行文件的问题解决了,或者 如果你想使用chrome,对我来说最简单的方法是安装Python 3,然后从命令提示符运行命令Python -m http。服务器,然后访问http://localhost:8000/,然后导航到您的文件
python -m http.server
今天碰到了这个。
我写了一些像这样的代码:
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://。
只是想把它放出来,以防其他人有类似的问题。
科尔多瓦实现了这一点。我还是不明白科多瓦是怎么做到的。它甚至不通过shouldInterceptRequest。
后来我发现,从本地加载任何文件的关键是:myWebView.getSettings().setAllowUniversalAccessFromFileURLs(true);
当你想要访问任何http资源时,webview会用OPTIONS方法检查,你可以通过WebViewClient授予访问权限。shouldInterceptRequest通过返回一个响应,对于下面的GET/POST方法,您可以只返回null。