首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >仅HTTP支持跨域请求,不支持跨域请求

仅HTTP支持跨域请求,不支持跨域请求
EN

Stack Overflow用户
提问于 2011-12-10 01:57:17
回答 9查看 303.1K关注 0票数 91

我使用下面的代码来发出一个AJAX请求:

代码语言:javascript
运行
复制
$("#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服务器上,所有网站都是从该服务器运行的,所以它不是跨域的。

我该如何解决这个问题?

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2011-12-10 02:02:21

您需要实际运行get服务器,并向该服务器上的URI发出get请求,而不是向文件发出get请求;例如,更改行:

代码语言:javascript
运行
复制
    $.get("C:/xampp/htdocs/webname/resources/templates/signup.php",

阅读下面这样的内容:

代码语言:javascript
运行
复制
    $.get("http://localhost/resources/templates/signup.php",

并且初始请求页面也需要通过http进行。

票数 76
EN

Stack Overflow用户

发布于 2013-01-24 06:58:57

我很幸运地用下面的开关启动了chrome:

代码语言:javascript
运行
复制
--allow-file-access-from-files

在os x try上(如果复制粘贴,请重新键入破折号):

代码语言:javascript
运行
复制
open -a 'Google Chrome' --args -allow-file-access-from-files

在其他*nix运行时(未测试)

代码语言:javascript
运行
复制
 google-chrome  --allow-file-access-from-files

或者在windows上编辑chrome快捷方式的属性并添加开关,例如

代码语言:javascript
运行
复制
 C:\ ... \Application\chrome.exe --allow-file-access-from-files

到“目标”路径的末尾

票数 116
EN

Stack Overflow用户

发布于 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中,以下命令是等效的:

代码语言:javascript
运行
复制
python -m http.server 8000
票数 88
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8449716

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档