我試圖使用相互證書身份驗證從TLS安全服務發送和接收數據。我成功連接到該服務,並且回覆是我已獲得授權。我將數據發送到服務器,然後連接'數據'事件......我知道我的數據準確發送,因爲我獲得了準確的響應數據。nodeJS TLS在數據中包含奇數字符
數據在每個塊的開始和結尾(有時在中間)包含奇數字符。
HTTP/1.1 200 OK
X-Powered-By: Servlet/2.5
Set-Cookie: JSESSIONID=8f2a41305cbe859001f1d54e5e80; Path=/xds; Secure
Content-Type: application/soap+xml;charset=utf-8
Transfer-Encoding: chunked
Date: Thu, 13 Feb 2014 01:53:14 GMT
6c
<?xml version='1.0' encoding='UTF-8'?><S:Envelope x.........
2000
<ns4:AdhocQueryResponse xmlns:ns2="urn:oasis:names:.........
1485
8425c" objectType="urn:oasis:names:tc:ebxml-regrep:.........
0
這裏是代碼我使用:
var tls = require('tls');
var net = require('net');
var receiveData = function(sock) {
var response = '';
sock.on('error', function(err) {
console.log("Socket error: " + err);
});
sock.on('data', function(d){
response += d.toString();
});
sock.on('end', function() {
console.log("Done receiving data from via TLS: " + response.length);
console.log(response);
});
};
var sendData = function(sock) {
console.log("Sending request to HIE");
var req = 'POST ' + path + ' HTTP/1.1\r\n' +
'Host: localhost\r\n' +
'Content-Length: ' + data.length + '\r\n' +
'Content-Type: application/soap+xml; charset=utf-8\r\n' +
'SOAPAction: "http://www.w3.org/2003/05/soap-envelope"\r\n' +
'\r\n';
sock.write(req);
sock.write(data);
};
var options = {
port: port,
host: host,
key: fs.readFileSync(tls_key, encoding='ascii'),
cert: fs.readFileSync(tls_cert, encoding='ascii'),
ca: fs.readFileSync(tls_ca, encoding='ascii')
};
var sock = tls.connect(options, function() {
var authorized = sock.authorized;
if (authorized) {
console.log("Successfully connected via TLS");
sock.setKeepAlive(true);
receiveData(sock);
sendData(sock);
} else {
console.log("Unauthorized to connect via TLS: " + sock.authorizationError);
}
});
有誰知道爲什麼我收到這些奇怪的字符?我試過設置襪子的setEncoding('utf8'),並且刪除了我需要的.toString()數據。但是,這並沒有解決這些奇怪字符的問題。
我想他們可能是大塊數據量的指標......但是,「6c」位於第一個塊的中間。所以,我不認爲就是這樣。更重要的是,即使在該塊中發送了大量數據,第三塊也是0。
請幫忙!