表达CORS响应

时间:2017-11-19 18:05:43

标签: express cors fetch-api

我使用express来返回通过请求调用检索到的api响应。

router.post('/', function(req, res){

   var options = {
      ...
   }

   rp(options)
        .then(function (parsedBody) {
            console.log(parsedBody); 
            res.json(parsedBody)
        })

控制台日志显示预期的有效负载,当我使用Postman时,我也会看到预期的有效负载。

当我的客户端应用获得响应时,它是:

Response {type: "cors", url: "http://localhost:3001/api/", redirected: false, status: 200, ok: true, …}

我尝试过添加CORS中间件:

app.use(function(request, response, next) {
    response.header("Access-Control-Allow-Origin", "*");
    response.header("Access-Control-Allow-Headers", 
                    "Origin, X-Rquested-With, Content-Type, Accept");
    next();
});

我的客户端使用fetch是一个非常简单的反应应用程序:

fetch('http://localhost:3001/api/', {
    method: 'POST',
    dataType: 'JSON',
    headers: {
        'Content-Type': 'application/x-www-form-urlencoded',
    },
    body: data,
}).then((response) => {
      console.log(response);
   }).catch((response) => {
          console.log('Error');
   });

我的反应应用是localhost:3000和快速api localhost:3001,预期的有效载荷是一个非常简单的对象......

{
    athlete: {
        firstname: "Matt"
        ...
    }
}

如何才能将api请求响应转发给客户端获取成功方法?

1 个答案:

答案 0 :(得分:0)

问题与CORS无关,反应应用程序内的响应需要解析为json:

.then((response) => {
    console.log(response.json());
})