使用 fetch API GET 请求管理 CORS

Posted

技术标签:

【中文标题】使用 fetch API GET 请求管理 CORS【英文标题】:managing CORS with fetch API GET request 【发布时间】:2018-05-22 00:48:56 【问题描述】:

我在 localhost:8080/enquiry 有一个终点

呈现以下 JSON:

["_id":"5a283e4c5a36f4556af34742",
   "firstName":"bob",
   "surname":"hoskins",
   "telephoneNumber":939483948,
   "gender":"male",
   "dayOfBirth":17,
   "monthOfBirth":5,
   "yearOfBirth":1978,"comments":"hello",
   "emailAddress":"jimmsrrs@gmail.com",
   "createdAt":"2017-12-06T19:00:28.401Z"]

我有一个看起来像这样的动作创建器

export const receiveEnquiries = enquiries => (
    type: RECEIVE_ENQUIRIES,
    enquiries 

  );
export const fetchEnquiries = () => dispatch => (
    enquiryAPIUtil
        .fetchEnquiries() // this is the fetch call in api.js below
        .then((enquiries) => dispatch(receiveEnquiries(enquiries)))
    );

我在 api.js 中有一个如下所示的获取请求:

export const fetchEnquiries = () =>
    fetch(`$api/enquiry`,  headers )
    .then(res => 
        res.json()
        console.log("res",res)
    )
    .then(data => console.log("data",data))

在控制台中而不是记录上面的 JSON,它记录以下内容:

res Response type: "cors", url: "http://localhost:8080/enquiry", 
redirected: false, status: 200, ok: true, … 

在 express server.js 我有

 const cors = require('cors')
 app.use(cors())

(以及呈现 JSON 的代码)

我想知道我是否更有可能在服务器端的客户端做错了什么?

【问题讨论】:

由于您要返回敏感数据,因此不应为所有来源启用 CORS。 【参考方案1】:

res.json() 返回从 JSON 解析的对象的承诺。

你忽略了它返回的对象,所以你没有得到任何 JSON。

【讨论】:

以上是关于使用 fetch API GET 请求管理 CORS的主要内容,如果未能解决你的问题,请参考以下文章

错误:使用 Fetch API 向第三方 API 发出 GET 请求时出现“TypeError:无法获取”

使用 fetch API 忽略条件 GET

使用 Fetch API 发布请求?

fetch网络请求 get 和 post

Fetch API 无法加载,cors

每次在 Node.js (Express.js) 中发出 API 请求之前,如何简化 Fetching Auth token?