node.js傳送https或http請求時可接收引數及出現的bug總結
傳送http請求注意事項
在使用node.js傳送http或https請求時,需注意:
如果是傳送http請求,需要匯入的node模組是:const http = require(‘http’);
如果是傳送https請求,需要匯入的node模組是:const https = require(‘https’);
兩者是分開匯入的。
傳送http請求可接收的引數
傳送http請求時,接收引數:
option 陣列物件,包含以下引數:host: 表示請求網站的域名或IP地址(請求的地址)。 預設為’localhost’。
hostname: 伺服器名稱,主機名是首選的值。
port: 請求網站的埠,預設為 80。
localAddress: 建立網路連線的本地
socketPath: Unix Domain Socket(Domain套接字路徑)
method: HTTP請求方法,預設是 ‘GET’。
path: 請求的相對於根的路徑,預設是’/’。QueryString應該包含在其中。例如:/index.html?page=12
headers: 請求頭物件。
auth: Basic認證(基本身份驗證),這個值將被計算成請求頭中的 Authorization 部分。
callback : 回撥,傳遞一個引數,為 http.ClientResponse的例項。http.request 返回一個 http.ClientRequest 的例項。
傳送http請求出現的bug總結
1 Error: getaddrinfo ENOTFOUND https://xx.dd.com
解決方法:在node.js中使用http或者https傳送請求的時候host不要帶http://或者https://,直接寫xx.yy.com即可。
2 Error: write EPROTO 101057795:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:openssl\ssl\s23_clnt.c:825:
解決方法:使用https的時候的預設埠是443,如果在設定埠的時候設定成了80(使用http的預設埠是80)會報此錯誤。改成443或者server定義的https的埠即可。
- 3 Error: unable to verify the first certificate
今天npm install總是報錯:unable to verify the first certificate(無法驗證第一證書),查了一下發現
As of February 27, 2014, npm no longer supports its self-signed certificates.
2014年2月27日,npm不再支援自簽名證書。
因為npm install走的是https協議,需要通過數字證書來保證的。
(1) 解決方法1:
取消ssl驗證:npm config set strict-ssl false;
如果還沒成功,則將npm源更換為國內映象:
npm config set registry http://registry.cnpmjs.org/
npm config set registry http://registry.npm.taobao.org/
(2)解決方法2:
在傳送https請求的時候指定忽略證書驗證,即options的rejectUnauthorized引數設定為false
var https = require('https'); var options = { hostname: 'encrypted.google.com', port: 443, path: '/', method: 'GET', rejectUnauthorized:false }; var req = https.request(options, function(res) { console.log("statusCode: ", res.statusCode); console.log("headers: ", res.headers); res.on('data', function(d) { process.stdout.write(d); }); }); req.end(); req.on('error', function(e) { console.error(e); });