2017-04-03 71 views
0
const http = require('http'); 

const req = http.request({ 
    method: 'POST', 
    hostname: 'cloudsso‐test.myco.com', 
    port: 80, 
    path: '/as/token.oauth2', 
    headers: { 
    'Content-Type': 'application/json', 
    }, 
    agent: false // create a new agent just for this one request 

}, function (res) { 

    res.on('headers', function (h) { 
    console.log('headers => ', h); 
    }); 

    let data = ''; 

    res.on('data', function (d) { 
    data += d; 
    }); 

    res.once('end', function() { 
    console.log('data => ', data); 
    }); 

}); 

req.write(JSON.stringify({ 
    client_id: 'xxx', 
    client_secret: 'secret', 
    grant_type: 'refresh_token', 
})); 

req.end(); 

我運行此代碼,我得到以下錯誤:Node.js的HTTP - 類型錯誤:標題內容包含無效字符

_http_outgoing.js:358 
    throw new TypeError('The header content contains invalid characters'); 
    ^

TypeError: The header content contains invalid characters 
    at ClientRequest.OutgoingMessage.setHeader (_http_outgoing.js:358:11) 
    at new ClientRequest (_http_client.js:105:12) 
    at Object.exports.request (http.js:31:10) 
    at Object.<anonymous> (/Users/alexamil/WebstormProjects/cisco/cdt-now/test/refresh-token.js:9:18) 
    at Module._compile (module.js:570:32) 
    at Object.Module._extensions..js (module.js:579:10) 
    at Module.load (module.js:487:32) 
    at tryModuleLoad (module.js:446:12) 
    at Function.Module._load (module.js:438:3) 
    at Module.runMain (module.js:604:10) 

無法揣摩出這個錯誤的來源。我聽說這是出於安全的原因在較新版本的節點,但無法弄清楚如何繞過它。

回答

0

直線上升,看起來,我們需要使用:的

headers: { 
    'content-type': 'application/json', 
    }, 

代替

headers: { 
    'Content-Type': 'application/json', 
    }, 

這些類型的模糊的錯誤消息讓我傷心!

1

我有一個類似的問題,我爲授權生成一個jwt令牌,它插入換行符。用token.replace(/\r?\n|\r/g, '')代替那些對我來說是訣竅。

相關問題