HTTP POST 请求适用于 Postman,但不适用于我的 Web 应用程序的 JavaScript 提取 [关闭]

Posted

技术标签:

【中文标题】HTTP POST 请求适用于 Postman,但不适用于我的 Web 应用程序的 JavaScript 提取 [关闭]【英文标题】:HTTP POST request works with Postman but not with my web application's JavaScript fetch [closed] 【发布时间】:2021-07-17 09:29:12 【问题描述】:

我有一个开发网站的测试环境。此 javascript 代码给出错误“415 unsupported media”。

const sendData = async ()  => 
const result = await fetch(`$databaseURL/categories`, 
    method: 'POST',
    headers: new Headers(
        accept: 'application/json',
        'contet-type': 'application/json'
    ),
    body: "Name":"", "isHTTPS":0, "DisplayName":""
);
const json = await result.json();

与 Postman 配合得很好。 GET 请求确实在 Web 应用程序中工作。尝试了几件事,例如在标题中添加“no-cors”和对正文进行字符串化。结果相同。 对于我的后端,我正在运行一个 .NET C# 应用程序。我可能错过了什么。你能帮助我吗?调查我的问题需要哪些额外信息?

谢谢。

【问题讨论】:

【参考方案1】:

注意拼写错误的 Content-Type 标头。

您的 fetch 函数说它正在发送 JSON,但您仍然必须实际发送 JSON 以供接收端对其进行解码。 在发送之前使用JSON.stringify() 将您的body 对象转换为JSON。

const result = await fetch(`$databaseURL/categories`, 
    method: 'POST',
    headers: new Headers(
        accept: 'application/json',
        'Content-Type': 'application/json'
    ),
    body: JSON.stringify(
      "Name": "", 
      "isHTTPS": 0, 
      "DisplayName": ""
    )
);

【讨论】:

以上是关于HTTP POST 请求适用于 Postman,但不适用于我的 Web 应用程序的 JavaScript 提取 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

POST 请求适用于 Postman,但不适用于 Guzzle

POST 请求适用于 Postman,但不适用于 axios 或 .fetch()

POST 请求适用于 Postman,但不适用于 axios.post()

请求适用于Postman,但不适用于axios.post

GET 请求适用于 Postman,但为啥它不适用于 ReactJS fetch?

我的 post route 不起作用,postman 认为是 GET 请求