【问题标题】:Delete default header for Contentful CreateClient API request删除 Contentful CreateClient API 请求的默认标头
【发布时间】:2021-10-09 02:37:39
【问题描述】:

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

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

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

但问题是——我已经在我的应用程序中使用了 Axios,并且通过我的 react 客户端发出的每个请求都包含默认的公共标头 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 } 
})

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

【问题讨论】:

  • 听起来您可能想要切换到使用 GraphQL API,以便您可以使用现有的 axios 设置调用该 API?但是,这需要一个“授权”标头,因此您可能需要重构您的 axios 调用以根据您要调用的 API 来获取动态标头。
  • 如果我只是删除我在项目中设置的默认标题auth-token,内容设置就可以完美运行。仅仅为了这个功能而使用 GraphQL 是没有意义的。

标签: reactjs axios http-headers contentful contentful-api


【解决方案1】:

在不使用contentful's 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;
   }
})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-16
    • 2013-08-26
    • 1970-01-01
    • 2020-01-15
    • 1970-01-01
    • 2022-09-27
    • 2017-03-06
    • 1970-01-01
    相关资源
    最近更新 更多