node.js - 从 API 获取 POST 数据(node js、react)

标签 node.js api reactjs

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

app.post('/login', function(req, res, next) {
    console.log("here");
    ...
});

此 API 托管在 localhost 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
        })
    });

我传递的内容暂时无关紧要,我只想发出成功的 POST 请求。当我提交表单时,它会获取 API,这是我在控制台上收到的消息...

OPTIONS /login 200 8.177 ms - 4

看起来好像有些东西有效,但事实并非如此,console.log("here");永远不会被调用。

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

最佳答案

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

您可以host the static HTML/JS/CSS from the node server ,这可能会解决问题。或者您可以尝试向 Node 服务器添加 CORS 权限。

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

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();
});

您可以在 MDN 上阅读有关 CORS 访问限制的更多信息。或enable-cors.org

关于node.js - 从 API 获取 POST 数据(node js、react),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39988356/

相关文章:

node.js - 如何在 Node 和 Express 应用程序中使用 Polymer cli 中的 Polymer 入门套件?

Javascript jQuery 调用 API 来填充表,但接收到特定对象调用的未定义信息

javascript - 无法在 FB.api 方法中声明任何内容

javascript - react onClick 键码未定义?

reactjs - React + Typescript + ESLint : no-unused-vars only for exported Enum-s

javascript - 将 console.time 结果写入变量

node.js - 如何在 Mongoose 中设置数据库名称和集合名称?

javascript - Nodejs getTime() 只显示执行时间

python - 如何从 Python 使用 Perl 库?

javascript - react 选择保存 Prop