Node.js 从API获取POST数据(节点js,react)

Node.js 从API获取POST数据(节点js,react),node.js,api,reactjs,Node.js,Api,Reactjs,我正试图向我的API发出POST请求。处理程序当前看起来像这样 app.post('/login', function(req, res, next) { console.log("here"); ... }); 此API托管在本地主机8080上。我正在提取数据,以便 fetch('http://localhost:8080/login', { method: 'post', headers: { 'Accept': 'appl

我正试图向我的API发出POST请求。处理程序当前看起来像这样

app.post('/login', function(req, res, next) {
    console.log("here");
    ...
});
此API托管在本地主机8080上。我正在提取数据,以便

fetch('http://localhost:8080/login', {
        method: 'post',
        headers: {
         'Accept': 'application/json',
         'Content-Type': 'application/json'
        },
        body: JSON.stringify({
         username: this.state.username,
         password: this.state.password
        })
    });
我现在所传递的内容暂时无关紧要,我只想提出一个成功的发帖请求。当我提交表单时,它会获取API,这是我在控制台上得到的消息

OPTIONS /login 200 8.177 ms - 4
看起来好像有什么东西起作用了,但实际上没有,
console.log(“here”)从不被调用


我认为我没有正确调用API。如果我删除了头,则会进行POST调用,但是我认为我需要这些头,因为它们对于将数据传递到
响应
非常重要。我该怎么办?

您可能面临CORS权限问题。如果您是从任何不同于正在运行的节点服务器url的主机(如本地文件系统)为web应用程序提供服务,则始终会发生这种情况。浏览器限制所有ajax访问与协议、子域、域甚至端口不完全匹配的URL

你可以,这可能会解决问题。或者,您可以尝试向节点服务器添加CORS权限

基本上,在节点中的
/login
路由之前,假设您使用的是express,请添加如下内容:

app.use(function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
  next();
});

您可以阅读更多关于CORS访问限制的信息,或者您可能面临CORS权限问题。如果您是从任何不同于正在运行的节点服务器url的主机(如本地文件系统)为web应用程序提供服务,则始终会发生这种情况。浏览器限制所有ajax访问与协议、子域、域甚至端口不完全匹配的URL

你可以,这可能会解决问题。或者,您可以尝试向节点服务器添加CORS权限

基本上,在节点中的
/login
路由之前,假设您使用的是express,请添加如下内容:

app.use(function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
  next();
});

您可以在上阅读更多关于CORS访问限制的信息,或者

我希望这会对其他人有所帮助

将其添加到提取请求中

headers: {
  'Content-Type': 'application/x-www-form-urlencoded',
},

我希望它能帮助别人

将其添加到提取请求中

headers: {
  'Content-Type': 'application/x-www-form-urlencoded',
},

了解这一点很有用,但我尝试了在网上找到的各种启用cors的方法,但仍然遇到同样的问题。然而,当我删除标题时,它是有效的。知道这一点很有用,但是我尝试了我在网上找到的每一种启用cors的变体,我仍然遇到同样的问题。但是,当我删除标题时,它会起作用。不要位于内容类型。不要位于内容类型。