我正在开发一个 node.js REST 服务,该服务被一个带有 javascript 的 web 客户端使用。我目前正在通过 HTTP 提供此服务。现在我已更改服务器以通过HTTPS提供它们,并且 ajax 调用已停止工作。
当我将服务器设置为通过 http 时,此客户端代码有效(显示“成功!”警报):
<html>
<head>
<title>Client</title>
<script src="http://code.jquery.com/jquery-1.8.0.min.js"></script>
<script type="text/javascript">
$(function () {
$("#go").click(function (e) {
$.ajax({
type: "GET",
url: "http://localhost:3010/users",
data: { username: "test", password: "12345" },
success: function(data) {
alert("success!");
}
}).error(function (data) {
alert("error");
});
e.preventDefault();
});
});
</script>
</head>
<body>
<a id="go" href="#">go!</a>
</body>
</html>
当我将服务器更改为使用 HTTPS 并更改客户端代码中的 url 时:
$.ajax({
type: "GET",
url: "http://localhost:3010/users",
...
当我使用 CURL 通过 https 调用测试服务器时,它确实可以正常工作:
curl --insecure "https://localhot:3010/users?username=test&password=12345"
我不明白为什么在使用 https 服务时 ajax 调用会失败。