我使用下面的代码来发出一个AJAX请求:
$("#userBarSignup").click(function(){
$.get("C:/xampp/htdocs/webname/resources/templates/signup.php",
{/*params*/},
function(response){
$("#signup").html("TEST");
$("#signup").html(response);
},
"html");
但在Google Chrome JavaScript控制台上,我一直收到这样的错误:
XMLHttpRequest无法加载file:///C:/xampp/htdocs/webname/resources/templates/signup.php.仅HTTP支持跨域请求。
问题是,signup.php文件托管在我的本地web服务器上,所有网站都是从该服务器运行的,所以它不是跨域的。
我该如何解决这个问题?
发布于 2011-12-10 02:02:21
您需要实际运行get服务器,并向该服务器上的URI发出get请求,而不是向文件发出get请求;例如,更改行:
$.get("C:/xampp/htdocs/webname/resources/templates/signup.php",
阅读下面这样的内容:
$.get("http://localhost/resources/templates/signup.php",
并且初始请求页面也需要通过http进行。
发布于 2013-01-24 06:58:57
我很幸运地用下面的开关启动了chrome:
--allow-file-access-from-files
在os x try上(如果复制粘贴,请重新键入破折号):
open -a 'Google Chrome' --args -allow-file-access-from-files
在其他*nix运行时(未测试)
google-chrome --allow-file-access-from-files
或者在windows上编辑chrome快捷方式的属性并添加开关,例如
C:\ ... \Application\chrome.exe --allow-file-access-from-files
到“目标”路径的末尾
发布于 2014-04-17 03:39:34
如果你正在做一个小的前端项目,并且想要在本地测试它,你通常会通过在web浏览器中指向你的本地目录来打开它,例如在你的地址栏中输入file:///home/erick/mysuperproject/index.html。但是,如果您的站点正在尝试加载资源,即使这些资源位于您的本地目录中,您也可能会看到这样的警告:
XMLHttpRequest无法加载file:///home/erick/mysuperproject/mylibrary.js.仅HTTP支持跨域请求。
Chrome和其他现代浏览器都对跨域请求实施了安全限制,这意味着您不能通过file:///加载任何东西,您需要始终使用http://协议,即使是本地-due同源策略。就这么简单,你需要挂载一个run服务器来运行你的项目。
这并不是世界末日,有很多解决方案,包括古老的Apache (如果你正在运行其他项目,可以使用VirtualHosts ),node.js和express,Ruby服务器等等,或者简单地修改你的浏览器设置。
然而,对于懒惰的人来说,有一个更简单、更轻量级的解决方案。你可以使用Python的SimpleHTTPServer。它已经和python捆绑在一起了,所以你根本不需要安装或配置任何东西!
例如,cd到您项目目录
1 cd /home/erick/mysuperproject,然后简单地使用
1Python -m SimpleHTTPServer,就是这样,你会在你的终端上看到这条消息
1在0.0.0.0端口8000上提供HTTP服务...现在,您可以返回到您的浏览器并访问http://0.0.0.0:8000
,其中提供了您的所有目录文件。您可以配置端口和其他内容,只需参阅文档即可。但是,当我急于测试一个新的库或想出一个新的想法时,这个技巧对我来说是有效的。
这就对了,编码快乐!
编辑:在Python 3+中,SimpleHTTPServer已替换为http.server。例如,在Python 3.3中,以下命令是等效的:
python -m http.server 8000
https://stackoverflow.com/questions/8449716
复制相似问题