node-fetch "api key is not a legal HTTP header" 错误
Posted
技术标签:
【中文标题】node-fetch "api key is not a legal HTTP header" 错误【英文标题】:node-fetch "api key is not a legal HTTP header" error 【发布时间】:2021-10-28 04:00:29 【问题描述】:我正在尝试使用 node-fetch 向外部 API 发出 GET 请求。当我运行代码时,出现以下错误:
UnhandledPromiseRejectionWarning: TypeError: Bearer [api key] is not a legal HTTP header value
不记名密钥是 JWT 格式,它位于外部配置文件中以保护隐私。
这是我的代码:
let api_config = require('./api_config.json');
const fetch = require("node-fetch");
fetch(api_config.API_Domain + api_config.SUBJECTCODES_OPTIONS_URI,
method: 'GET',
headers:
'Authorization': "Bearer " + api_config.API_Key,
"Content-type": "application/json",
"Accept": "application/json",
).then(res => res.json())
.then(json => console.log(json))
【问题讨论】:
如果您的API_Key
值中包含行尾字符(CR 或LF),则会导致此问题。虽然不知道值(或它的混淆版本;例如,所有数字都替换为“A”,所有字母都替换为“B”,以保护实际值),这将是一场猜谜游戏。跨度>
您也可能被阻止设置授权标头;有关这方面的更多信息,请参阅How to send authorization header with axios。
【参考方案1】:
我在 nextjs 遇到了同样的问题和同样的错误,我将 url_list[url]
替换为
encodeURI(url_list[url])
如下
return NextResponse.redirect(
encodeURI(url_list[url]),
301
)
编码网址解决了我的问题
【讨论】:
以上是关于node-fetch "api key is not a legal HTTP header" 错误的主要内容,如果未能解决你的问题,请参考以下文章
Mailchimp API 在使用 node-fetch 而不是 json 时返回一个大的 gzip 对象
node.js node-fetch - 传递附加到url的查询字符串的问题
NodeJS Node-Fetch Call Stripe 中的 JSON 错误
node-fetch 3.0.0 和 jest 给出 SyntaxError: Cannot use import statement outside a module