我几乎已经准备好部署应用程序而且遇到了障碍。
我有一个nodejs app(http://sslscanner-ssldecoder.azurewebsites.net/decoder/)
当我在本地机器上运行时,一切正常。 但是当我部署它(在Azure上)时,AJAX调用不会发送正文(我认为)。
这是jQuery调用:
$("#decoderSubmit").on('click', function() {
var body = $('#csr').val();
var csr;
decode(body, csr);
});
function decode(body, csr) {
$.ajax({
type: 'POST',
url: '/api/decoder',
data: {
body: body,
csr: csr
},
dataType: 'JSON',
timeout: 4500,
success: callback,
error: fail
});
function callback(data) {
var csrBody = data.slice(0, 20);
var certBody = data.slice(0, 12);
if (!csr) {
console.log(certBody);
}
if (csr) {
console.log(csrBody);
}
}
function fail(request, status, err) {
console.log(err);
}
}
这是NodeJS端点(/ api / decoder):
router.route('/decoder')
.post(function(req, res) {
let body = req.body.body;
let csr = req.body.csr;
decode(body, csr, function(err, result) {
if (err)
throw err;
res.json(result);
});
function decode(data, type, callback) {
if (type == 'true') {
let inFile = randCertFileName();
var result;
fs.writeFile(inFile, data, function(err) { // Write the cert to a file
if (err) {
console.error("Error writing certificate: " + err);
return callback(err);
}
});
execute('openssl req -in ' + inFile + ' -text', function(out) { // Execute the certutil dump command
result = out;
var hash = crypto.createHash('sha1').update(data).digest('hex');
result = result.concat('\n', 'sha1:', hash);
hash = crypto.createHash('md5').update(data).digest('hex');
result = result.concat('\n', 'md5:', hash);
fs.unlink(inFile); // Delete the certificate file
return callback(null, result);
});
} else if (type == 'false') {
let inFile = randCertFileName(); // Get a random filename for incoming cert
var result;
fs.writeFile(inFile, data, function(err) { // Write the cert to a file
if (err) {
console.error("Error writing certificate: " + err);
return callback(err);
}
});
execute('openssl x509 -in ' + inFile + ' -text', function(out) { // Execute the certutil dump command
result = out;
fs.unlink(inFile); // Delete the certificate file
return callback(null, result);
});
}
}
});
在比较服务器上的调用标头和localhost上的调用时,我注意到的一件事是添加了这个额外的标头: " X供电-通过:ASP.NET"
如果这是问题,你能帮我理解如何覆盖吗?
任何和所有帮助将不胜感激。感谢。
答案 0 :(得分:0)
我弄明白了这个问题。我的ajax电话没有问题。我忘了我在Windows服务器上运行应用程序,因此OpenSSL命令无效。