从React到Node.js的POST请求

时间:2018-06-05 13:23:03

标签: node.js reactjs

我不知道为什么会这样。

当我在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
  }
  )}

1 个答案:

答案 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