0

我已经在 Heroku 上部署了我的 Node.js Koa API 应用程序。我正在调用 USAJOB.gov API,它可以在我的本地主机上运行。但是,在 Heroku 上,我收到此错误:

You don't have permission to access "http://data.usajobs.gov/$(SERVE_403)/api/search?" on this server.

这是我的 Koa 路由器片段:

router.get('/jobs', async (ctx) => {
  const { keyword, location } = ctx.query;
  const url = `https://data.usajobs.gov/api/search? 
    Keyword=${keyword}&LocationName=${location}`;
  const host = 'data.usajobs.gov';
  const userAgent = '<redacted>';
  const authKey = '<redacted>';
  const headers = {
    Host: host,
    'User-Agent': userAgent,
    'Authorization-Key': authKey,
  };

  await fetch(url, {
  headers,
  method: 'GET',
  });
}
4

1 回答 1

2

所以事实证明,是否应该使用凭据发出跨站点访问控制请求是问题所在。我无法弄清楚如何使用 node-fetch 进行配置,但是一旦我阅读了解决方案(下面的链接),切换到 axios,已配置withCredentials: true和添加headers: { 'X-Requested-With': 'XMLHttpRequest' },然后一切正常。

来源:axios删除方法给出403

于 2020-01-22T03:25:13.717 回答