我试图用一个https CORS AJAX从 jQuery到Node.js进程。 然而,每当发出呼吁时, Chrome就在圣殿:<条码>通过 http:// localhost/ 净额:ERR_INSECURE_RESPONSE。
https://stackoverflow.com/questions/11690191/ Cross-domain-request- from-https-aborts-immediately> Stack Overflow question,如果我进口自己签署的证书I,我就应当能够打上十字路口。 因此,我把ert子进口到 Chrome。 我可以看到“ Chrome”管理证书在当局下签名。 但是,当我尝试阿盟教团的呼吁时,它仍然失败。
This is how I made the private key:
openssl genrsa -out domain.key 4096
Now:
openssl req -x509 -sha512 -nodes -newkey rsa:4096 -keyout domain.key -out domain.crt
就通用名称而言,我把计算机的IP地址这样说, Chrome不会抱怨URL错配。
页: 1
<!DOCTYPE html>
<html>
<title>BlackBox</title>
<head>
<meta charset="utf-8">
<script src="jquery-1.11.2.min.js"></script>
<script src="bootstrap-3.3.4-dist/js/bootstrap.min.js"></script>
<script src="login.js"></script>
</head>
<body>
<div class="container-fluid">
<div class="row">
<div class=col-md-4>
<h2> Welcome to BlackBox</h2>
<label>username</label>
<input type="text" name="username" id="username">
<label>password</label>
<input type ="text" name="password" id="password">
<input type="button" id="loginbtn" value="Login"/>
<div class="container">
<div class="row">
<div class="out"></div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
这就是 Java语与超文本。
$(document).ready(function() {
$( #loginbtn ).click(clickLogin);
function clickLogin() {
var username = $( #username ).val();
var password = $( #password ).val();
if(password == || username == ) {
$(".out").html("Empty username or password");
} else {
$.ajax({
type: "PUT",
url: "https://localhost/",
contentType: "application/json",
data: JSON.stringify({
username: username,
password: password,
}),
dataType: "text",
})
}
};
});
最后,这里是“诺德”进程,它既为“超文本”和“贾瓦文”服务,也为接收“非洲复兴共和与民主军”电话提供了动力。
const fs = require("fs");
const http = require( http );
const https = require( https );
var loginPage = fs.readFileSync( login.html );
var loginPageJs = fs.readFileSync( login.js );
var jquery = fs.readFileSync( jquery-1.11.2.js );
var bootstrap = fs.readFileSync( bootstrap-3.3.4-dist/js/bootstrap.min.js )
var options = {
key: fs.readFileSync( domain.key ),
cert: fs.readFileSync( domain.crt )
};
http.createServer(function(req, res) {
res.writeHead(301, {Location: https:192.168.1.58/ })
res.end();
}).listen(80);
https.createServer(options, function(req, res) {
if(req.method === GET && req.url === / ) {
res.writeHead(200, "OK", { Content-Type : text/html });
res.write(loginPage);
res.end();
} else if(req.method === GET && req.url === /login.js ) {
res.writeHead(200, "OK", { Content-Type : application/javascript });
res.write(loginPageJs);
res.end();
} else if(req.method === GET && req.url === /jquery-1.11.2.js ) {
res.writeHead(200, "OK", { Content-Type : application/javascript });
res.write(jquery);
res.end();
} else if(req.method === GET && req.url === /bootstrap-3.3.4- dist/js/bootstrap.min.js ) {
res.writeHead(200, "OK", { Content-Type : application/javascript });
res.write(bootstrap);
res.end();
} else if(req.method === "OPTIONS" && req.url === / ) {
res.writeHead(204, "No Content", {
"access-control-allow-origin": origin,
"access-control-allow-methods": "GET, POST, PUT, DELETE, OPTIONS",
"access-control-allow-headers": "content-type, accept",
"access-control-max-age": 10,
"content-length": 0
});
var requestBodyBuffer = [];
req.on("data", function(chunk) {
requestBodyBuffer.push(chunk);
})
req.on("end", function() {
var requestBody = requestBodyBuffer.join("");
var obj = JSON.parse(requestBody);
if(obj.hasOwnProperty( username ) && obj.hasOwnProperty( password )) {
console.log(obj.username);
console.log(obj.password);
}
})
}
}).listen(443);