我显然尝试从本地 nodejs 服务器获取数据,但出现了奇怪的错误。这是带有 express 的简单服务器
let express = require('express')
let server = express()
server.listen(3100)
server.get("/", (req, res) => {
res.send("hello") })
这是我反应中的代码。我只在 useEffect 中使用它
fetch('http://localhost:3100/', {
headers: 'Access-Control-Allow-Origin',
method: "GET"
})
.then(res => res.json())
.then(response => {
console.log(response)
})
.catch(err => console.log(err))
我遇到了这个错误
Uncaught (in promise) TypeError: Failed to execute 'fetch' on 'Window': The provided value is not of type '(sequence<sequence<ByteString>> or record<ByteString, ByteString>)'
我不知道为什么会发生这种情况,我环顾了互联网,但仍然没有得到解决方案。感谢您的任何建议!
答案 0 :(得分:1)
错误是因为 headers
的值不能是字符串。
它应该是一个普通对象(或一个 Headers
实例),其中每个属性是一个标题名称,关联的值是标题值。 (Source)
headers: {
"X-Example-Request-Header": "Example value"
}
在这种特殊情况下,您根本不应设置 headers
。 Access-Control-Allow-Origin
是 响应 标头,而不是请求标头。将其添加到请求中只会导致问题。
请参阅 this question 以进一步阅读该主题,并参阅 cors
middleware 将 CORS 权限添加到您的 Express 服务器。
答案 1 :(得分:-1)
您需要添加一个不是 string
类型的标题,它应该是 Header
类型
fetch(' URL ... ',
{
method: "GET",
headers: new Headers({
Accept: 'application/json',
'Content-Type': 'multipart/form-data'
}),
body: formData
}