【发布时间】:2020-12-08 05:08:35
【问题描述】:
错误消息:未捕获(承诺中)类型错误:无法在“窗口”上执行“获取”:名称无效
环顾四周,我不知道出了什么问题。我正在尝试创建一个网站以最终将 GET 请求发送到第三方服务器。但是这段代码是一个测试,看看我如何将数据从客户端发送到我的服务器。
let summoner = "playerName.value";
let fetchData = {
method: "POST",
headers: {
"Content-Type:": "application/son user search choice"
},
body: JSON.stringify(summoner)
};
fetch("/", fetchData);
服务器代码
const express = require("express");
const app = express();
app.listen(4000, () => console.log("listening at 4000"));
app.use(express.static("public"));
app.post("/", (req, res) => {
// res.send("POST request to the homepage")
console.log(req);
});
【问题讨论】:
-
我认为您的 Content-Type 不正确,这是导致错误的原因。应该是“application/json”
-
No Content-Type 只是提供上下文的标头。
-
您是对的,但是您的“Content-Type”显示为“Content-Type:”并带有冒号。删除冒号,它应该可以工作。刚刚自己测试了这个并在那里添加冒号给了我你收到的相同错误,因为“Content-Type:”是一个无效的标题(无效的名称),但删除冒号是成功的。
-
@Chris 是正确的。解释 http 标头的标准是冒号分隔的键值对。在 HTTP 标头中添加一个额外的冒号会破坏规范。 Fetch 对此进行检查并抛出 TypeError,而不是让用户发送损坏的请求。
-
天哪,我爱你!你完全正确,对不起,我应该注意你说的更多。
标签: javascript node.js express fetch