使用fetch时status code =200,但是response.ok却是false

发布于 2022-09-04 14:08:46 字数 1059 浏览 14 评论 0

背景:
使用node的express开一个服务器端口为9876,react APP使用fetch请求localhost:9876的资源,使用浏览器调试工具的network查看status是200,但是在fetch的then里面打印出来response是status:0,ok:false

fetch的代码:

fetch(`http://localhost:9876/login.html`, {
    method: "POST",
    mode: "no-cors",
    headers: {
            "Content-Type": "application/x-www-form-urlencoded"
          }
    })
      .then(response => {
          log(response)
    })
    .catch(function(error) {
          console.log('There has been a problem:' + error.message);
    });

打印出来的response:
clipboard.png

node代码:

var express = require('express');
var app = express();
app.use(express.static('login'));
app.post('/login.html',function(req, res){
    res.writeHead(200,{"Content-Type":"text/plain"});
    res.end("Hello world");
});
app.listen(9876, function () {
  console.log('app listening on port 9876!');
});

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

记忆里有你的影子 2022-09-11 14:08:46

找到原因:
发起的是跨域请求,给fetch的参数设置为mode:"cors",然后node那里加一句app.use(require('cors')());如果fetch设置为mode:"no-cors",可以请求成功,但是response的属性不可读

晨曦÷微暖 2022-09-11 14:08:46

Response.ok

Read only

Contains a boolean stating whether the response was successful (status in the range 200-299) or not.

不矛盾,请求发送成功了,但是没响应。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文