我正在网站上做一些非常基本的jQuery ajax,我遇到了麻烦。
以下是相关代码:
$(document).ready( function() {
$("#getdatabutton").click( function() {
$.ajax({
url: "/jsontest/randomdata",
type: "get",
data: [{name:"ymax", value:$("#randomgraph").height()},
{name:"count", value:$("#countinput").val()},
{name:"t", value:Math.random()}],
success: function(response, textStatus, jqXHR) {
data = JSON.parse(response);
updateGraph(data);
$("#result").html(response);
if(data["error"] == "") {
$("#errorbox").html("None");
}
else {
$("#errorbox").html(data["error"]);
}
},
error: function(jqXHR, textStatus, errorThrown) {
$("#errorbox").html(textStatus + " " + errorThrown);
}
});
});
});
页面通过HTTPS加载,但XMLHttpRequests似乎通过HTTP传出。
我甚至尝试将网址更改为绝对网址(https://larsendt.com/jsontest/randomdata),而仍将请求发送到我网站的HTTP版本。
当然,由于请求是针对不同的协议,因此ajax调用失败(跨域和所有这些)。
据Chrome报道:
The page at https://larsendt.com/jsontest/ displayed insecure content from http://larsendt.com/jsontest/randomdata/?ymax=500&count=32&t=0.08111811126582325.
我能想到的唯一其他相关信息是我让nginx从http://larsendt.com重定向到https://larsendt.com,但我不知道这会怎样破坏任何东西(我相信这是相当标准的做法。)
如果你想要一个现场演示,那么破碎的版本仍然是https://larsendt.com/jsontest。
无论如何,提前谢谢。
答案 0 :(得分:15)
尝试修复网址,以便服务器无需重定向
url: "/jsontest/randomdata/" // there was a missing trailing /
// i.e. https://larsendt.com/jsontest/randomdata?ymax=500&count=32&t=0.9604179110508643
// was going to https://larsendt.com/jsontest/randomdata/?ymax=500&count=32&t=0.9604179110508643
答案 1 :(得分:1)
301永久重定向可能正在发生。检查运行Fiddler并查看Result列。通常是200个代码,但我发现了301代码。
https jquery ajax调用重定向到 http ,导致混合内容错误。