8

我在我的网站上做一些非常基本的 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.comhttps://larsendt.com的 301 重定向,但我看不出这会如何破坏任何东西(我相信这是相当标准的做法)。

如果您想要现场演示,损坏的版本仍在https://larsendt.com/jsontest上。

无论如何,提前谢谢。

4

2 回答 2

14

尝试修复 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
于 2012-11-25T23:49:11.413 回答
1

301 永久重定向可能正在发生。要检查运行 Fiddler 并观察 Result 列。通常是 200 个代码,但我发现了一个 301 代码。

https jquery ajax 调用重定向到http,导致混合内容错误。

于 2016-08-24T00:30:04.393 回答