配置Chrome启动参数支持本地AJAX请求,解决XMLHttpRequest cannot load file..,Uncaught NetworkError: Failed to execute 'send' on 'XMLHttpRequest':.. 问题
直接将本地的HTML文件拖拽到Chrome浏览器中运行时,发送的AJAX请求本地文件,会报跨域错误:
报错的原因是:Chrome默认不支持本地的AJAX请求!
解决问题的办法是:给Chrome浏览器添加启动参数:--disable-web-security 或者 --allow-file-access-from-files
具体步骤参见:http://jingyan.baidu.com/article/7c6fb4281d685780642c900a.html
下面讲讲是什么AJAX跨域问题:
Ajax本身是不支持跨域的,跨域问题其实很简单,通过浏览器的相应设置可以完成两个不同的服务器或两个不同服务下的项目互相访问。
那什么是跨域呢?我还说不清楚,我说说比较不规范但是通俗的说说法吧,比如你使用chrome打开一个本地的html页面,那么我认为现在你的机器就是一个站点,这个html就是运行在这个站点上,如果你要在这个html页面中通过xmlhttprequest获取百度的页面源码信息,就有点跨域的意思,这和你直接在地址栏上输入www.baidu.com又不一样,因为那样的话,你当前的站点就是百度了,如果百度也在他的主页上通过xmlhttprequest获取google的页面信息,那样应该也算是跨域了吧,但是这个跨域问题在服务器上是不存在的,你在服务器上使用urlHttpConnection连接其他站点是允许的。
可以想象,你连接到你自己的服务器,打开一个页面,如果这个页面要获取google的数据,那么这个页面可以向服务器发出请求(这个页面和这个服务器是同一个域,我通俗的理解,所以这个请求没问题),服务器根据请求向google获取数据(这个是允许的),然后服务器再将获取到的数据反馈回页面,这样页面就获取到google的数据了。