【发布时间】: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