这是我的代码:
this.loadMap = function () {
this._map = null;
this._width = 0;
this._height = 0;
this._playerX = 0;
this._playerY = 0;
this.finished = false;
this.loaded = false;
$.ajax({
type: "GET",
url: "maze1.xml",
dataType: "xml",
success: this.parseXmlMap,
context: this
});
};
Run Code Online (Sandbox Code Playgroud)
我得到的错误是
"XMLHttpRequest无法加载file:/// C:/wamp/www/mazegame/maze1.xml.Access-Control-Allow-Origin不允许使用Origin null.
这个相同的脚本在Firefox中运行良好
Mic*_*nan 26
你在Chrome上测试过吗?基本上发生的是因为您从文件系统而不是从服务器加载文件,null即使您请求的资源是您本地的,Chrome也会设置您的原始文件.如果您是从Apache等HTTP服务器上执行此操作,我认为它可以正常工作.
小智 19
是的,谷歌以他们的幸运智慧决定Chrome不会出于相当模糊的安全原因而允许访问本地文件.每两个本地文件被视为来自不同的域,并且访问本地文件被视为跨站点请求.
有一种解决方法,但仅在某些情况下有用:如果您可以使用命令行参数运行Chrome,--allow-file-access-from-files则不会进行安全检查.
我在Chrome(版本20.0.1132.57)中遇到了同样的问题,并且使用--allow-file-access-from-files对我不起作用(在Ubuntu 12.04上).
但是,使用python -m SimpleHTTPServer包含我试图测试的本地文件的目录中的命令可以解决问题.该命令启动一个HTTP服务器,该服务器为当前目录树提供服务http://localhost:8000/
所以,如果我有一个文件test.html使用ajax调用同一目录中的文件我可以使用http://localhost:8000/test.html,Chrome就可以了.对我来说,这适用于本地开发/测试.
我在www.commandlinefu.com上遇到了这个命令.
重申Paul&Juggernaut所说的话:
在OSX中打开终端并粘贴此命令
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --allow-file-access-from-files
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
47482 次 |
| 最近记录: |