我试图加载一个3D模型,存储在我的电脑本地,到Three.js与JSONLoader, 3D模型是在同一目录下,作为整个网站。

我得到了“跨起源请求只支持HTTP.”错误,但我不知道是什么原因导致它也不知道如何修复它。


当前回答

今天碰到了这个。

我写了一些像这样的代码:

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://。

只是想把它放出来,以防其他人有类似的问题。

其他回答

如果您坚持在本地运行.html文件,而不是将其与web服务器一起提供,那么您可以通过使有问题的资源内联可用来防止这些跨起源请求的发生。

当我试图通过file://来提供.js文件时,我遇到了这个问题。我的解决方案是更新我的构建脚本,以取代<script src="…">标签与<script>…</script>. " 这里有一个吞咽的方法:

1. 运行NPM install——save-dev来安装gulp、gulp-inline和del包。

2. 在根目录中创建gulpfile.js后,添加以下代码(只需更改文件路径以适合自己):

let gulp = require('gulp');
let inline = require('gulp-inline');
let del = require('del');

gulp.task('inline', function (done) {
    gulp.src('dist/index.html')
    .pipe(inline({
        base: 'dist/',
        disabledTypes: 'css, svg, img'
    }))
    .pipe(gulp.dest('dist/').on('finish', function(){
        done()
    }));
});

gulp.task('clean', function (done) {
    del(['dist/*.js'])
    done()
});

gulp.task('bundle-for-local', gulp.series('inline', 'clean'))

要么运行gulp bundle-for-local,要么更新构建脚本以自动运行它。

您可以在这里看到我的案例的详细问题和解决方案。

加载本地文件的一种方法是在项目文件夹中使用它们,而不是在项目文件夹之外。在您的项目示例文件下创建一个文件夹,类似于我们创建图像的方式,并替换其中使用完整的本地路径而不是项目路径的部分,并使用项目文件夹下的文件的相对url。 这对我很有效

我也能够在使用以下href的锚标记时重新创建此错误消息:

<a href="javascript:">示例:一个标签</a> .

在我的情况下,一个标签被用来获得“指针光标”和事件实际上是由一些jQuery点击事件控制。我删除了href并添加了一个应用的类:

光标:指针;

只是显式-是的,错误是说你不能将浏览器直接指向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

为java安装本地web服务器,例如Tomcat,对于php,您可以使用lamp等 将json文件放到公共可访问的应用服务器目录中 启动应用程序服务器,您应该能够从localhost访问该文件