使用带有授权标头和CORS的Fetch

11

我正在尝试向一个我似乎无法工作的在线游戏API发送请求。我正在使用Fetch API,某些请求需要Authorization Bearer token,但是请求从未随授权标头发送。

我已经尝试过

mode: 'no-cors',
credentials: 'include'

显然,将授权放在头部就像这样

header: { 'Authorization': 'Bearer TOKEN' }

但是请求仍然未获得授权。有人可以指导我正确的方向吗?

编辑 这是我发出请求的方式。

fetch(URL, {
  credentials: 'include',
  header: {
    'Authorization': 'Bearer TOKEN'
  }
})

你是否真的拥有这个API的令牌?请展示你所发出的确切请求以及你所得到的响应。当然,你应该隐藏你的API密钥/令牌... - Matt Morgan
我刚刚在@MattMorgan更新了帖子,并且根据是否使用cors,我得到了两个不同的响应。如果我使用mode:'no-cors',则授权永远不会在标头中发送...如果我使用mode:'cors'(默认为'cors'),则将发送预检请求并响应无法使用页面。 - Steven R
你能提供API的实际URL吗?还是URL本身是私有的? - Matt Morgan
这不是私有的,但我认为它并不重要。它是https://api.guildwars2.com/v2/characters。 - Steven R
2个回答

14
关键名称应该是headers,而不是header。
fetch(URL, {
  credentials: 'include',
  headers: {
    'Authorization': 'Bearer TOKEN'
  }
})

6
天哪,我刚花了两个小时才发现我的请求为什么不起作用。 - Dominik S

1

阅读文档

密钥可以通过查询参数或HTTP头传递。 Guildwars API服务器不支持预检CORS请求,因此如果您的应用程序在用户的浏览器中运行,则需要使用查询参数。

要通过查询参数传递,请在请求中包含“?access_token =”。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接