如何使用带有令牌身份验证的浏览器提取来发出API请求

时间:2019-01-20 21:51:33

标签: javascript fetch access-token fetch-api

我正在尝试使用fetch(browser)发出API请求。标头中必须有令牌才能发出请求。

我可以在节点(服务器端)发出成功的请求。 但是,在浏览器上发出请求时,OPTIONS请求失败,并显示401。

const order_url = new URL(process.env.API_URL + 'orders/');
const params = { type: 'amazon', status: 'in_queue' };
Object.keys(params).forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    Authorization: 'Token ' + process.env.API_TOKEN,
    'Content-Type': 'application/x-www-form-urlencoded'
};

fetch(order_url, {
  headers
})
  .then(response => response.json())
  .then(result => {
    console.log(result);
  })
  .catch(error => {
    console.error(error)
  })

我收到的错误是"NetworkError when attempting to fetch resource." 可以在浏览器上正常运行的正确配置是什么?

1 个答案:

答案 0 :(得分:0)

您没有正确发送标题。 试试这个。

myHeaders = new Headers({
  'Authorization': 'Token ' + process.env.API_TOKEN,
  'Content-Type': 'application/x-www-form-urlencoded'
});

然后

fetch(order_url, {
  headers: myHeaders,
  method: 'GET'
})