Node之HTTPS客户端

2020-01-04  本文已影响0人  27亿光年中的小小尘埃

向其他网站请求数据

在Node.js中,也可以很轻松地向任何网站发送请求并读取该网站的响应数据。在http模块中,可以使用request方法向其他网站请求数据。

var req=http.request(options,callback)

向目标网站发送数据

在使用了request方法后,可以使用http.ClientRequest对象的write方法向目标网站发送数据

request.write(chunk,[encoding])

结束请求

request.end([chunk],[encoding])

完整请求示例

var http = require('http');
var options = {
    hostname: 'www.microsoft.com',
    port: 80,
    path: '/',
    method: 'GET'
};
var req = http.request(options,function(res) {
    console.log('状态码: ' + res.statusCode);
    console.log('响应头: ' + JSON.stringify(res.headers));
    res.setEncoding('utf8');
    res.on('data', function (chunk) {
        console.log('响应内容: '+chunk);
    });
});
req.end();

终止请求

可以使用http.ClientRequest对象的abort方法终止本次请求

request.abort

设置请求端口超时时间

request.setTimeout(timeout,[callback])

制作代理服务器

示例:

var http=require('http');
var url=require('url');
var server = http.createServer(function(sreq, sres) {
    var url_parts = url.parse(sreq.url);
    var opts = {
        host: 'www.amazon.cn',
        port: 80,
        path: url_parts.pathname,
        headers: sreq.headers
    };
    var creq = http.get(opts, function(cres) {
        sres.writeHead(cres.statusCode, cres.headers);
        cres.pipe(sres);
    });
    sreq.pipe(creq);
});
server.listen(1337, '127.0.0.1');

创建HTTPS服务器与客户端

在Node.js中,提供了一个https模块,专用于创建HTTPS服务器与客户端。

HTTPS服务器与HTTP服务器的区别

创建HTTPS服务器

在创建HTTPS服务器之前,服务器端首先需要创建公钥、私钥及证书,步骤如下

在客户端与服务器端建立连接后,将首先确认证书的合法性。如果在服务器中使用学习或测试用证书,使用浏览器访问该服务器时,浏览器中将显示一个警告信息,警告用户该证书不是一个经过证书授证中心签名的证书。

在具备了证书文件之后,可以使用该证书文件创建一个pfx文件。所谓pfx文件,是指该文件内容必须符合公钥加密技术12号标准(Public Key CryptographyStandards#12,PKCS#12)为存储和传输用户或服务器私钥、公钥和证书而指定的
格式。

在openssl工具中,可以使用如下所示的命令创建pfx文件。

openssl pkcs12 -export -in certificate.pem -inkey privatekey.pem -out certificate.pfx

在这些文件(其中pfx文件为可选用文件)具备了之后,可以使用https模块中的createServer方法创建一个HTTPS服务器

https.createServer(options,[requestListener])

在创建了HTTPS服务器之后,我们需要指定该服务器所要监听的地址(可以为一个IP地址,也可以为一个主机名)及端口,这时,我们可以使用该HTTPS服务器的listen方法

server.listen(port,[host],[backlog],[callback])

关闭服务器

server.close();

创建HTTPS客户端

在https模块中,可以使用request方法向其他使用HTTPS协议的网站请求数据。

var req=https.request(options,callback)

当在options参数值对象中使用如下所示的属性及属性值时,不能使用全局https.Agent对象。

上一篇 下一篇

猜你喜欢

热点阅读