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

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


当前回答

只需将url更改为http://localhost而不是localhost。如果你从本地打开html文件,你应该创建一个本地服务器来服务该html文件,最简单的方法是使用Web server for Chrome。这样问题就解决了。

其他回答

科尔多瓦实现了这一点。我还是不明白科多瓦是怎么做到的。它甚至不通过shouldInterceptRequest。

后来我发现,从本地加载任何文件的关键是:myWebView.getSettings().setAllowUniversalAccessFromFileURLs(true);

当你想要访问任何http资源时,webview会用OPTIONS方法检查,你可以通过WebViewClient授予访问权限。shouldInterceptRequest通过返回一个响应,对于下面的GET/POST方法,您可以只返回null。

我怀疑在一些答案中已经提到了它,但我将稍微修改一下,以获得完整的工作答案(更容易找到和使用)。

访问:https://nodejs.org/en/download/。安装nodejs。 通过命令提示符npm Install -g http-server安装http-server。 切换到你的工作目录,index.html/yoursome.html所在的目录。 运行http-server -c-1命令启动http服务器

打开网络浏览器http://localhost:8080 或http://localhost:8080/yoursome.html -取决于您的HTML文件名。

很多问题,我的问题是缺少'/'的例子: jquery-1.10.2.js:8720 XMLHttpRequest无法加载http://localhost:xxxProduct/getList_tagLabels/ 必须是:http://localhost:xxx/Product/getList_tagLabels/

我希望这对遇到这个问题的人有所帮助。

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

今天碰到了这个。

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

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

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