当前位置: 首页 > 面试题库 >

提取请求后为空

凌琦
2023-03-14
问题内容

我在用JavaScript抓取API挣扎。当我尝试通过获取将某些内容发布到服务器时,请求正文为空数组。但是,当我使用Postman时,它可以工作…这是我在NodeJS中的服务器代码:

const express = require('express')
const app = express()
const port = 3000

app.use(express.json())
app.post('/api', function (req, res) {
    console.log(req.body)
})
app.listen(port)

这是我的客户:

fetch('http://"theserverip":3000/api', {
    method: 'POST',
    headers: { "Content-Type": "application/json" },
    mode: 'no-cors',
    body: JSON.stringify({
        name: 'dean',
        login: 'dean',
    })
})
.then((res) => {
    console.log(res)
})

问题是在服务器端,req.body为空。有人能帮我吗?谢谢 !


问题答案:

问题是

mode: 'no-cors'

从文档中

防止该方法成为HEAD,GET或POST之外的任何其他内容, 并且 阻止 标头成为
简单标头
之外的任何其他内容

简单 内容类型报头限制允许

  • text/plain
  • application/x-www-form-urlencoded
  • multipart/form-data

这会导致您精心制作的Content-Type: application/json标头成为content-type: text/plain(至少在通过Chrome测试时)。

由于您的Express服务器需要JSON,因此它不会解析此请求。

我建议省略mode配置"cors"而是使用默认选项。

由于您的请求并不 简单
,因此您可能需要向Express服务器中添加一些CORS中间件。

另一个(略有漏洞)选项是告诉Express将text/plain请求解析为JSON。这使您可以将JSON字符串作为简单请求发送,这也可以避免预检OPTIONS请求,从而降低总体网络流量。

app.use(express.json({
  type: ['application/json', 'text/plain']
}))

编辑:将结尾括号添加到app.use最终代码块。



 类似资料:
  • 问题内容: 我想知道如何一次获取多个GET URL,然后将获取的JSON数据放入我的React DOM元素中。 这是我的代码: 但是,我想从服务器中获取其他JSON数据,然后使用传递到其中的所有这些JSON数据呈现我的ReactDOM。例如: 这可能吗?如果不是,将多个JSON数据提取到我的渲染ReactDOM元素中的其他解决方案是什么? 问题答案: 您可以在解决方案之前依靠Promises来执行

  • 问题内容: 我有一个 要求: 我想知道默认的超时时间是多少?以及如何将其设置为3秒或不定秒的特定值? 问题答案: 它没有指定的默认值。该规范根本没有讨论超时。 通常,您可以为承诺实现自己的超时包装器: 如https://github.com/github/fetch/issues/175中所述 (https://github.com/mislav)

  • t[object对象]。(/home/ubuntu/node_modules/mongodb/lib/mongodb/connection/server.js:530:7)在[object object]。在[object object]发出(events.js:88:20)。(/home/ubuntu/node_modules/mongodb/lib/mongodb/connection/con

  • 我有登录请求,在请求中我获得了JSESSIONID和XSRF-TOKEN作为Cookie数据,如下所示 如果需要,如何从响应中提取JSESSIONID,以便在注册Cookie中传递该变量 在此处输入图像描述

  • 我已经使用spring编写了一个拦截器,它以preHandle方法从HTTPServletRequest读取请求正文。请求正文包含json。我还能够读取请求正文,但请求对象发生了一些事情,请求正文变得空白。正因为如此,这个请求正成为一个糟糕的请求。任何帮助都将不胜感激。提前谢谢。

  • 问题内容: 我已经环顾了几天,无法解决这个问题。基本上,我正在将图像上传到服务器并获得ID作为回报,问题是我无法弄清楚如何提取此ID并将其更改为准备好保存到数据库的String。 程式码 这是我得到的输出 问题答案: 您正在接收JSON;您已经使用该方法将其解码为Python结构: 您可以将其视为任何其他Python列表;内容只是一个字典,因此另一个字典键可以获取值: 当您知道上传了多少张图像时,