我有一个使用 https 的 NodeJS 代码模块为:https.request(options, (res) => {......在哪里 options是一个像

const options = { 
    hostname: SERVICE_HOSTNAME, 
    path: BASE_PATH, 
    method: 'GET', 
    headers: { 
        'Content-Type': 'application/json', 
        'Accept​': 'application/json', 
        ApplicationId, 
        Authorization 
    } 
  }; 

当我添加 Accept 时,我的问题就开始了标题。我收到一个错误:
TypeError [ERR_INVALID_HTTP_TOKEN]: Header name must be a valid HTTP token ["Accept​"] 
    at ClientRequest.setHeader (_http_outgoing.js:472:3) 
    at new ClientRequest (_http_client.js:203:14) 
    at Object.request (https.js:289:10) 

如何 Accept header 无效?

请您参考如下方法:

现在这很疯狂,但是您的“接受”字符串中有一个额外的字符。
如果你跑

console.log('Accept​'.charCodeAt(6)) // prints 8203 

(您必须使用问题中的“接受”副本运行它,我假设它是从其他地方复制粘贴的)

Unicode 8203 是 zero width space ,因此我们人类看不到它:)

顺便说一句,最初我通过复制粘贴到 Node REPL 中发现了这个角色,并在收到错误后注意到控制台输出中的“正方形”。

然后,我尝试将您的代码复制粘贴到我的 IntelliJ 编辑器中,并惊喜地看到此警告:


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!