Red de conocimiento informático - Material del sitio web - Cómo configurar un proxy para solicitudes https usando nodejs

Cómo configurar un proxy para solicitudes https usando nodejs

En proyectos web, a veces es necesario obtener datos de otros entornos a través de protocolos. HTTPS es un protocolo de red utilizado para asegurar la transmisión de datos. Todos sabemos que Ajax puede solicitar datos de forma asincrónica, pero Ajax por sí solo no puede lograr el procesamiento entre dominios. Algunos otros métodos deben procesarse de acuerdo con diferentes navegadores. Firefox, Google, etc. e IE deben emitir sus propios juicios. Por lo tanto, aunque este método de análisis de datos a través del navegador omite la descompresión de los datos, todavía está disponible. Es más difícil realizar procesamiento entre dominios cuando hay un certificado de seguridad. Por ejemplo: los encabezados de solicitud de IE no se pueden cambiar. En este punto, solicitar y analizar datos a través de Node es relativamente simple. El siguiente es todo el proceso de solicitud de datos a través de https en nodejs:

var https = require('https');

var zlib = require('zlib');

var post_data="....";

var post_data="... .............";//Solicitar datos< / p>

var reqdata = JSON.stringify(post_data);

var opciones = {

nombre de host: '10.225.***.***',

p>

puerto: '8443',

Ruta: '/data/table/list',

Método: 'POST',

rechazarNo autorizado: falso,

requestCert: {

'nombre de usuario': 'admin',

'contraseña': '123456******* ***',

'Cookie': 'locale=zh_CN',

'X-BuildTime': '2015-01-01 20:04:11',

'Inicio de sesión automático': 4',

'Codificación de aceptación': 'gzip, deflate',

'X-Timeout': '3600000',

'Tipo de contenido': 'Aplicación/json',

"Longitud de contenido":reqdata.length": reqdata.

write(reqdata);

req.on('respuesta', función (respuesta) {

switch (response.headers['content-encoding']) {

caso 'gzip':

var body = '';

var gunzip = zlib.createGunzip();

respuesta.pipe(gunzip) ;

gunzip.on('datos', función (datos) {

cuerpo += datos;

});

gunzip.on('end', function () {

var returndatatojson= JSON.parse(body);

req.end();

} );

gunzip.on('error', función (e) {

console.log('error' + e. toString());

req.end();

});

break;

case 'deflate':

var salida = fs. createWriteStream("d:temp.txt");

respuesta.pipe(zlib.createInflate()).pipe(salida);

req.end();

romper;

default:req.end();

romper;

}

}});

req.on('error')(función (función))on('error', función (e) {

console.log(new Error('problema con la solicitud: ' + e. mensaje));

req.end();

setTimeout(cb, 10);

});

Nota: La longitud de los datos solicitados debe incluirse en las opciones. "Aceptar-Codificación" debe agregarse a las opciones: "gzip, deflate" Los datos devueltos deben determinar qué método de compresión se utiliza y luego descomprimirlos para obtenerlos. los datos. El returndatatojson en el evento final de gunzip son los datos obtenidos.