我不知道为什么会这样。
当我在Node.js中向我的服务器发出请求时,当它获得GET时,我就可以得到回复。它看起来像是:
fetch(config.apiUsersURL, {
method: "GET",
headers: {
"Content-Type": "application/json"
},
credentials: "same-origin",
mode: 'no-cors'
})
.then(res => this.setState({
isConected: true
}))
.catch(error => error);
当我要求使用同一个网址时,但是在发布POST时我什么都没得到。我错过了什么吗?
const ObjToSend = { isReady: true };
fetch( config.apiUsersURL, {
method: 'POST',
mode: 'no-cors',
body: JSON.stringify(ObjToSend),
headers: {
"Content-Type": "application/json"
},
credentials: "same-origin",
mode: 'no-cors',
})
.then(res => res.json())
.then(r => this.setState({ questions: r }))
我的端点看起来像这样:
let randomProblem2;
router.post('/', (req, resp) => {
resp.append('Access-Control-Allow-Origin', '*')
resp.append('Access-Control-Allow-Headers', 'Content-Type')
console.log("this shows if yes was clicked", req.body)
if(req.body.isReady){ //when clicked
randomProblem2 = problemManager.getRandomProblem();
randomize(randomProblem2, resp);
}
})
function randomize(randomProblem2, resp){
resp.json({
randomProblem : randomProblem2
}
)}
答案 0 :(得分:1)
由于您使用的模式为no-cors
,因此您无法使用javascript访问回复
以下引用MDN:
no-cors - 防止该方法不是HEAD,GET 或POST,以及除了简单之外的任何标题 头。如果任何ServiceWorkers拦截这些请求,则可能不会 添加或覆盖除简单标题之外的任何标题。 此外,JavaScript可能无法访问结果的任何属性 响应。这可确保ServiceWorkers不会影响语义 Web和防止出现的安全和隐私问题 跨域泄漏数据。
请检查下面的MDN链接以了解其余模式选项 https://developer.mozilla.org/en-US/docs/Web/API/Request/mode