如何使用fetch来发布内容类型的application / json

时间:2017-02-17 10:18:07

标签: json node.js cors fetch

我有一个react应用程序,它按如下方式对API执行fetch调用:

 postForm(state) {
    var formData = state.formData;
    return fetch('http://localhost:3000/api/V0.1/formSubmit', {method: 'POST', headers: {"Content-Type": "application/json"}, body: JSON.stringify(formData)})
    .then((response) => response.json())
    .then((responseJson) => {
      console.log(responseJson);
      return null;
    })
    .catch((error) => {
      console.error(error);
    });
  }

然而,它被CORS阻止,因为规范声明application / json是非标准内容类型。

但是,我不确定如何修改我的提取调用以执行所需的转发前请求以使其允许application / json。

API调用是:

app.post("/api/v0.1/formSubmit", function(req, res) {
  res.setHeader('Access-Control-Allow-Origin', 'http://localhost:8080');
  res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
  res.setHeader('Access-Control-Allow-Headers', '*');
  var formData=req.body;
  console.log(formData);
  res.status(200).json(formData);
});

1 个答案:

答案 0 :(得分:3)

在定义路由之前。声明

searchView.setOnSuggestionListener(new SearchView.OnSuggestionListener() {

    @Override
    public boolean onSuggestionSelect(int position) {
        return true;
    }

    @Override
    public boolean onSuggestionClick(int position) {
        Cursor cursor= searchView.getSuggestionsAdapter().getCursor();
        cursor.moveToPosition(position);
        String suggestion =cursor.getString(2);//2 is the index of col containing suggestion name.
        searchView.setQuery(suggestion,true);//setting suggestion
        return true;
    }
});

在CORS中,检查请求以查找服务器上的可用方法。即在 OPTIONS 请求中。当您获得成功的回复后,您将能够发送请求。

您也可以为特定页面启用CORS。在这里学习https://github.com/expressjs/cors