在node.js中调用https Web服务(在代理后面)

我正在尝试从node.js调用https web服务。 我在一个代理的后面,所以我提供代理和端口的凭据与选项一起。 但是我收到以下错误

[Error: 2060:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol :openssl\ssl\s23_clnt.c:683: ]

以下是我试图调用https web服务的代码片段:

 var https = require('https'); var username = 'username'; var password = 'password'; var auth = 'Basic ' + new Buffer(username + ':' + password).toString('base64'); var data = ''; var options = { hostname: 'proxy', port: 8080, path: 'https://crm.zoho.com/crm/private/json/Leads/getMyRecords?authtoken=11111tsvs26677026bcba45ae3f&scope=crmapi', headers: { "Proxy-Authorization" : auth } }; console.log("options- " + JSON.stringify(options) + '\n'); var req = https.request(options, function(res) { console.log("statusCode- " + res.statusCode); console.log("headers-" + res.headers); res.on('data', function(chunk) { data += chunk; }); res.on('end', function (chunk) { console.log('response-' + data); }); }); req.end(); req.on('error', function(e) { console.error(e); }); 

任何人都可以请帮我解决这个问题?

在此先感谢,马诺吉

我有错误的使用相同的问题

 var https = require('https'); 

但是,我的代理只需要HTTP,代理将负责完成请求HTTPS,因为您将其设置为path参数

 (...) path: 'https://crm.zoho.com/crm/private/json/Leads/getMyRecords?authtoken=11111tsvs26677026bcba45ae3f&scope=crmapi', (...) 

这适用于我:

 // baiken9: use http here var http = require('http'); var username = 'username'; var password = 'password'; var auth = 'Basic ' + new Buffer(username + ':' + password).toString('base64'); var data = ''; var options = { hostname: 'proxy', // baiken9: Proxy Port port: 8080, // baiken9: Add method type in my case works using POST method: "POST", // baiken9: when proxy redirect you request will use https. It is correct as is path: 'https://crm.zoho.com/crm/private/json/Leads/getMyRecords?authtoken=11111tsvs26677026bcba45ae3f&scope=crmapi', headers: { // baiken9: I cannot test it my proxy not need authorization "Proxy-Authorization" : auth, // baiken9: required for redirection host: "crm.zoho.com", // baiken9: length of data to send 'content-length': 0 } }; console.log("options- " + JSON.stringify(options) + '\n'); var req = http.request(options, function(res) { console.log("statusCode- " + res.statusCode); console.log("headers-" + res.headers); res.on('data', function(chunk) { data += chunk; }); res.on('end', function(chunk) { console.log('response-' + data); }); }); req.end(); req.on('error', function(e) { console.error(e); }); 

输出继电器:

 statusCode- 200 headers-[object Object] response-{"response":{"error":{"message":"Invalid Ticket Id","code":"4834"}}} 

亲切的问候