纯本地开发环境抛CORS错误

Pure local development environment throwing CORS error

我正在尝试使用 Node、Express 和 MySQL 在本地开发我的网站。为此,我安装了一个本地 MySQL 服务器。当我 运行 我的本地节点 svrApp.js 网络服务器然后连接到 localhost:3000 (使用 Chrome 版本 62.0.3202.94(官方构建)(64 位)),我得到CORS(跨源资源共享)错误。

我对 CORS 进行了大量研究,我了解它是什么,为什么会这样等等。但我仍然不明白的是,当我所做的一切都是当地的。那应该都是同一个域,对吧?相同的本地主机,相同的端口。我在生产环境中(在世界之外)的相同版本代码在没有任何 CORS 处理的情况下工作正常。那么,本地发生了什么,以至于我被告知我正在使用跨域?我不相信我需要这样做,但我似乎无法找到触发此 CORS 错误的问题。

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

下面的代码是客户端代码向服务器发出 SQL 请求以呈现 table 以及服务器端生成的 select 查询的结果。同样,一切都在本地托管。页面,SQL 服务器,全部。

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 访问的响应 headers,但没有任何乐趣。

/* 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,因为一切都是本地的。

我得到的结果是:

Failed to load localhost:3000/EAselect: Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https.

我在这里广泛搜索了与 CORS 和本地托管服务相关的内容,但没有找到专门解决此问题的内容。

能想到的就这些了,补充一下相关信息。如果我遗漏了需要帮助的内容,请告诉我,我会很乐意进行编辑。感谢任何帮助或解释。

您可以尝试指定协议:

var ip = "http://localhost:3000/";