我在我的网站上做了一些非常基本的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输出的。
我甚至尝试将URL更改为绝对URL(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的301重定向,但是我看不到这会破坏什么(我相信这是相当标准的做法)。
如果您想进行现场演示,则仍可通过https://larsendt.com/jsontest获取损坏的版本。
无论如何,预先感谢。
尝试修复URL,以便您的服务器不必重定向
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