首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >纯本地开发环境抛出CORS错误

纯本地开发环境抛出CORS错误
EN

Stack Overflow用户
提问于 2017-12-12 08:08:30
回答 1查看 1.9K关注 0票数 1

我试图在本地开发我的网站使用Node,Express,和MySQL。在此过程中,我安装了一个本地MySQL服务器。当我运行本地节点svrApp.js web服务器,然后连接到localhost:3000 (使用ChromeVersion62.0.3202.94(正式构建)(64位))时,我会得到一个CORS (交叉源资源共享)错误。

我已经对CORS做了大量的研究,我了解它是什么,为什么它是什么,等等。但我仍然不明白的是,为什么我需要使用它,而我所做的一切都是本地的。那应该是同一个领域,对吧?相同的本地主机,同一个端口。我的相同版本的代码在生产中(在世界上)工作良好,没有任何CORS处理。那么,在本地发生了什么,以至于我被告知我使用的是跨域?我不认为我需要这样做,但我似乎找不到问题是什么,触发了这个CORS错误。

如果我必须在这里使用CORS,那么很好,但是如果是这样的话,那么对于我所有的研究,我仍然缺少一些基本的东西,因为即使我发现了一些东西,我也无法让它工作。

下面的代码是客户端代码,向服务器发出SQL请求,以呈现带有服务器端生成的select查询结果的表。同样,一切都是本地托管的。页面,SQL服务器,所有这些。

代码语言:javascript
复制
var ip = "localhost:3000/";

function afterPageLoad(){
var req = new XMLHttpRequest();
var data = {};
req.open("GET", ip+"EAselect", true);
req.withCredentials = true;
req.setRequestHeader("Content-Type", "application/json");
req.addEventListener("load", function(dataResponse, status){
    if(req.status >= 200 && req.status < 400){
        dataResponse =  JSON.parse(req.responseText);
        buildTable(dataResponse);
    }else{
        console.log("Error: " + req.status + ", " + req.statusText);
    }
});
req.send(JSON.stringify(data));
}

下面是服务器上的路由处理程序。我添加了应该允许CORS访问的响应头,但没有joy。

代码语言:javascript
复制
/* Select Query*/
app.get("/EAselect", function(req,res,next){
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, 
Content-Type, Accept");
pool.query("SELECT * FROM workouts", function(err, rows, fields){
    if(err){
        console.log("query failure. " + err.description);
        next(err);
        return;
    }else{

        res.send(JSON.stringify(rows));
    }
});
});

我希望能够简单地连接到本地资源,而无需在服务器或客户端上实现CORS,因为一切都是本地的。

我得到的结果是:

代码语言:javascript
复制
Failed to load localhost:3000/EAselect: Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https.

我在这里搜索了大量与CORS和本地托管服务有关的内容,但没有发现任何专门针对这个问题的内容。

这是我所能想到的所有相关信息的补充。如果我错过了一些需要帮助的东西,请告诉我,我会很高兴地编辑。我感谢你的任何帮助或解释。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-12 08:16:56

您可以尝试指定协议:

代码语言:javascript
复制
var ip = "http://localhost:3000/";
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47767881

复制
相关文章

相似问题

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