我尝试用JSONLoader将一个3D模型加载到three.js中,这个3D模型和整个网站在同一个目录中。
我得到了EDOCX1[1]错误,但我不知道是什么导致的,也不知道如何修复它。
- 你想在本地做这个吗?
- 您需要使用localhost,即使它的本地文件
- 真的,但为什么?
- 因为跨域策略
- 但这不是跨领域的!
- 如果您使用的是chrome,那么从终端启动chrome时使用--allow file access from files选项可能会对您有所帮助。
- 是的,当文件和网页在同一个文件夹中时,它不是真正的跨域文件,现在是…我发现如果你使用火狐而不是Chrome,问题就会消失。
- 我刚在URL之前添加了http://
我的水晶球说你用file://或C:/加载模型,因为它们不是http://,所以不会出现错误消息。
因此,您可以在本地PC中安装Web服务器,或者将模型上载到其他地方,然后使用jsonp并将URL更改为http://example.com/path/to/model。
- 是的,我想用file://来做这个,但我不明白为什么允许这样做。好吧,我正在安装灯具,我想…
- 想象一下,如果允许的话,网页作者使用的webapp类似于load('file://C:/users/user/supersecret.doc'),然后使用ajax等将内容上传到他们的服务器。
- 但我正试图从我自己的目录中加载一些内容,甚至index.html也在那里!
- 不幸的是,政策是针对所有情况制定的,不仅仅是针对你的:(,所以你必须忍受它。
- 在github wiki中有一个关于这个主题的页面:github.com/mrdoob/three.js/wiki/how-to-run-things-locally
- 您也可以使用chrome中的--allow file access from files开关。根据我的回答:stackoverflow.com/questions/8449716/…
- @Edwardtyl浏览器只显示服务器返回的任何HTML,决不运行返回的任何可执行文件(即,它甚至不知道服务器运行的语言)。你有什么文件可以证明你的陈述吗?我很感兴趣。
- 哦,等等,这不是我想说的。对不起的!xd我想说的是,如果你在一台计算机上运行php,那么php可以访问它运行的计算机的所有文件,而javascript不会访问,因为它会尝试访问客户端的文件(安全风险),而不是服务器的文件。这就是为什么当你想在服务器上加载一个文件时,例如c:/hi.txt,你可以LOAd通过php(在文件所在的服务器上运行),而不是通过javascript(在客户机上运行,可能是另一台计算机)。
- 因此对于这种情况,Ajax将是解决方案。
- @Andreaswong设想一下,如果有问题的页面是从file://加载的,那么您的示例是不相关的(就像op和我自己说的那样),这不是跨域问题,因为该域实际上是本地主机,因为file:/。/
- 使用ID为的脚本标记比创建服务器要好。
- 我在哪里能找到像你一样的水晶球?这对我的日常编程工作有很大帮助。
- 我收到这个错误,我没有从文件://运行。我在localhost:8001上尝试从localhost加载rtmp://stream。
只是要明确一点——是的,错误是说您不能将浏览器直接指向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。
J.N.
或者,如果您需要更快速的设置并已经使用nodejs…
键入npm install -g http-server安装http-server。
改成你的工作目录,你以前住的地方。
通过发出http-server -c-1来启动HTTP服务器
这将启动node.js httpd,它将目录中的文件作为静态文件提供,这些静态文件可从http://localhost:8080访问。
红宝石
如果你喜欢的语言是Ruby…红宝石之神也认为这是可行的:
1
| ruby -run -e httpd . -p 8080 |
PHP
当然,PHP也有它的解决方案。
- 这节省了我很多时间,谢谢。我的python安装没有simplehttpserver模块,但是节点指令的工作方式很吸引人。
- 作为对lukep评论的回应,在python 2.7中,该命令按照指示$ python -m SimpleHTTPServer工作,它产生消息:Serving HTTP on 0.0.0.0 port 8000 ...。如果模块名拼写错误,例如$ python -m SimpleHTTPServer,则会收到错误消息No module named SimpleHttpServer。如果安装了python3(v.python 2.7),则会收到类似的错误消息。您可以使用命令:$ python --version检查您的python版本。您还可以这样指定要侦听的端口:$ python -m SimpleHTTPServer 3333。
- python服务器从启动服务器的目录中提供文件。因此,如果要提供的文件位于/users/7stud/angular_projects/1app中,则在该目录中启动服务器,例如$ cd ~/angular_projects/1app,然后启动$ python -m SimpleHTTPServer。在浏览器中输入url http://localhost:8000/index.html。您还可以在启动服务器的目录的子目录中请求文件,例如http://localhost:8000/subdir/hello.html。
- 如果安装了Ruby,则可以使用以下命令启动服务器:$ ruby -run -e httpd . -p 5000(在端口5000上为当前目录(.中的文件提供服务)
- 如果安装了nodejs,则可以下载HTTP服务器:1)将目录更改为要从中提供文件的目录:$ cd ~/angular_projects/1app2)如果使用的是nvm:$ nvm use 0.10(指定要激活的nodejs版本)3)下载并将服务器安装为命令行命令:npm install http-server -g4)运行服务器:$ http-server .,这将产生消息Starting up http-server, serving . on: http://0.0.0.0:8080。这允许您在浏览器中使用URL,如localhost:8080/index.html。
- 我听说python很简单也很强大,就像"x"语言一样,但这太荒谬了!不需要安装xampp,也不需要安装一个简单的HTTP服务器JS和节点来提供静态文件—一个命令和boom!非常感谢,节省了很多时间和麻烦。
- 令人惊叹的!-对于Windows上的python,请使用:python-mhttp.server8080…或任何您想要的端口,当您想退出时,只需ctrl-c。
- 您可能想知道,python(至少是python 2的)simplehttpserver非常慢。它的速度太慢,对于加载大量图像或进行音频或视频的项目通常是无用的。因此,关于替代品的这个问题
- 这真的很有用,太棒了
- 在我的例子中,为了能够使用.js运行post请求,python抛出了501,使用了node。
在Chrome中,您可以使用此标志:
1
| --allow-file-access-from-files |
在这里阅读更多。
- 这不适用于咖啡脚本问题。
- @blairg23,请记住,此解决方案需要重新启动chrome.exe的所有实例才能工作。
- 请解释一下如何在铬合金中使用它。
- @但普里雅不应该这样做
- 我建议只在本地调试时使用chromium(从标志--allow-file-access-from-files开始)。它意味着将chrome用于普通的Web浏览,并将chrome用作HTML文件的默认应用程序。
今天参加了这个活动。
我写了一些这样的代码:
1 2 3 4 5
| app.controller('ctrlr', function($scope, $http){
$http.get('localhost:3000').success(function(data) {
$scope.stuff = data;
});
}); |
…但应该是这样的:
1 2 3 4 5
| 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。That will fix the issue.
- +1对于Web Server for Chrome应用程序链接-它是目前为止最简单和最干净的解决方案,用于Chrome IMO的临时httpd设置
例如,在android应用程序中,为了允许javascript通过file:///android_asset/访问资产,请在WebSettings上使用setAllowFileAccessFromFileURLs(true),您可以在WebView上调用getSettings()。
- 精彩!我们正要重写方法,将JSON注入变量中。但这是可行的!webview.getsettings().setallowfileaccessfromfileurls(真);
如果您使用Mozilla Firefox,它将按预期工作,不会出现任何问题;
令人惊讶的是,intenteexplorer_edge工作得非常好!!!!
对于那些在没有python或node.js的Windows上的用户,仍然有一个轻量级的解决方案:mongoose。
您所要做的就是将可执行文件拖到服务器根目录所在的位置,然后运行它。任务栏中会出现一个图标,它将在默认浏览器中导航到服务器。
另外,z-wamp是一个100%的便携式wamp,运行在一个文件夹中,非常棒。如果您需要一个快速的PHP和MySQL服务器,这是一个选项。
- 如果安装了php或安装了php,则可以启动文件夹中的服务器:php.net/manual/es/features.commandline.webserver.php
我将列出3种解决此问题的不同方法:
使用非常轻的npm包:使用npm install -g live-server安装Live Server。然后,进入该目录,打开终端,输入live-server,点击回车,页面将在localhost:8080处显示。另外:默认情况下,它还支持热重新加载。
使用谷歌开发的轻量级谷歌Chrome应用程序:安装该应用程序,然后转到Chrome中的"应用程序"选项卡,打开该应用程序。在应用程序中,将其指向正确的文件夹。您的页面将被送达!
在Windows中修改Chrome快捷方式:创建Chrome浏览器的快捷方式。右键单击图标并打开属性。在属性中,将target编辑为"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --disable-web-security --user-data-dir="C:/ChromeDevSession"并保存。然后使用chrome打开使用ctrl+o的页面。注意:不要使用此快捷方式进行常规浏览。
使用http://或https://创建URL
错误:localhost:8080。
解决方案:http://localhost:8080。
对我来说最快的方法是:对于Windows用户,在解决了firefox问题的情况下运行文件,或者如果您想使用chrome,对我来说最简单的方法是安装python 3,然后从命令提示符运行命令python -m http.server,然后转到http://localhost:8000/然后导航到您的文件。
我怀疑有些答案中已经提到了这个问题,但是我会稍微修改一下这个问题以得到完整的工作答案(更容易找到和使用)。
转到:https://nodejs.org/en/download/。安装NoDEJS。
通过从命令提示符npm install -g http-server运行命令来安装HTTP服务器。
切换到您的工作目录,其中index.html/yoursome.html居住。
通过运行命令http-server -c-1启动HTTP服务器
打开网页浏览器至http://localhost:8080。或者http://localhost:8080/yoursome.html—这取决于您的HTML文件名。
我建议您使用小型服务器在本地主机上运行此类应用程序(如果您不使用某些内置服务器)。
以下是一个非常简单的设置和运行:
1
| https://www.npmjs.com/package/tiny-server |
在浏览器上加载一个HTML文件时,我发现了这个错误,该文件使用的是本地目录中的JSON文件。在我的例子中,我可以通过创建一个允许服务器静态内容的简单节点服务器来解决这个问题。我把密码留在另一个答案上了。
它只是说应用程序应该在Web服务器上运行。我在Chrome上也遇到了同样的问题,我启动了Tomcat,并将我的应用程序移到了那里,它工作了。
加载本地文件的一种方法是在项目文件夹中使用本地文件,而不是在项目文件夹之外。在项目示例文件下创建一个类似于我们为图像创建的文件夹,并替换使用完整本地路径而不是项目路径的部分,并使用项目文件夹下文件的相对URL。It worked for me
呃。我刚刚发现一些官方词汇"试图加载使用Dojo/Text插件的非编译、远程AMD模块将由于跨源安全限制而失败"。(AMD模块的构建版本不受影响,因为构建系统消除了对Dojo/Text的调用。)"https://dojotoolkit.org/documentation/tutorials/1.10/cdn/
为了你们所有人在江户城1号〔19〕上…设置一个简单的洗衣机,使这些迷人的能力在您自己的拷贝铬…
保存一个plist,在~/Library/LaunchAgents中命名为whatever(例如launch.chrome.dev.mode.plist),其内容与…
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC"-//Apple//DTD PLIST 1.0//EN""http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>launch.chrome.dev.mode</string>
<key>ProgramArguments</key>
<string>/Applications/Google Chrome.app/Contents/MacOS/Google Chrome</string>
<string>-allow-file-access-from-files</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist> |
它应该在启动时启动。但是您可以使用终端命令在任何时候强制它这样做
launchctl load -w ~/Library/LaunchAgents/launch.chrome.dev.mode.plist
塔达!??????????????????
- 为Java.Tomcat安装本地WebServer,对于PHP,可以使用LAMP等
- 将JSON文件放到公共可访问的应用服务器目录中
启动应用服务器,您应该能够从本地主机访问该文件。
我还能够在使用具有以下href的锚标记时重新创建此错误消息:
在我的例子中,使用了一个标记来获取"指针光标",事件实际上是由某个jqueryon-click事件控制的。我删除了Href并添加了一个适用的类:
在没有服务器的情况下无法加载静态本地文件(例如:svg)。如果您的机器中安装了NPM/纱线,则可以使用"HTTP服务器"设置简单的HTTP服务器。
1 2
| npm install http-server -g
http-server [path] [options] |
Or open terminal in that project folder and type"hs". It will automaticaly start HTTP live server.
有很多问题,我的问题是缺少'/'示例:jquery-1.10.2.js:8720 xmlhttpRequest无法加载http://localhost:XXXproduct/getlist&taglabels/必须是:http://localhost:xxx/product/getlist aglabels/
我希望这对解决这个问题的人有帮助。