1

我正在将 Contentful 作为 CMS 集成到我的 react web 应用程序中。npm 包内容允许访问使用createClient方法存储的内容。此方法使用 Axios 创建对内容交付 API 的请求。

client = contentful.createClient({
        space: *** ,
        accessToken:  *** 
})

// getting data 
fetchPosts = () => this.client.getEntries()

但问题是——我已经在我的应用程序中使用了 Axios,并且通过我的 react 客户端发出的每个请求都包含默认的 common header auth-token。因此,我的 HTTP 请求出现以下错误 -Request header field auth-token is not allowed by Access-Control-Allow-Headers in preflight response.

我尝试将整个标头设置为空对象并设置auth-token为未定义,但这无济于事,因为我的请求仍将包含我的默认标头的密钥-

client = contentful.createClient({
        space: *** ,
        accessToken:  ***, 
        headers: {} 
})

// OR

client = contentful.createClient({
        space: *** ,
        accessToken:  ***, 
        headers: { 'auth-token' : undefined } 
})

我遇到了这篇文章,它回答了如何修改一个请求以不包含公共标头,但我不确定如何使用它来修改createClient方法。感谢你的帮助。

4

1 回答 1

2

在不使用contentful 的 javascript SDK的情况下尝试了以下操作,它可以工作:

  1. 修改该特定请求的 Axios 实例以删除您的默认标头
  2. 使用基本(+ 纯) URL 访问内容交付 API。
const url = 
      `${baseUrl}/spaces/${spaceId}/environments/master/entries?access_token=${accessToken}` ;

axios.get(url, {
      transformRequest: (data, headers) => {
          delete headers.common['auth-token'];
          return data;
   }
})
于 2021-08-04T11:35:14.890 回答