我已经在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',
});
}
因此事实证明,是否应该使用凭据发出跨站点访问控制请求就是问题所在。我无法弄清楚如何使用node-fetch进行配置,但是一旦我阅读了解决方案(下面的链接),切换到axios,然后配置了withCredentials: false
,所有的工作就可以了。