我正在尝试从node.js调用https Web服务。我在代理服务器后面,所以我在选项中提供代理和端口以及凭据。但我收到以下错误
[Error: 2060:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol
:openssl\ssl\s23_clnt.c:683:
]
以下是我尝试调用https网络服务的代码段:
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);
});
有人可以帮我解决这个问题吗?
提前致谢, 的Manoj
答案 0 :(得分:4)
我使用
错误地遇到了同样的问题var https = require('https');
但是我的代理只需要HTTP,代理将负责完成HTTPS请求,因为你在路径参数上设置它
(...)
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"}}}
亲切的问候