jQuery ajax不会发出HTTPS请求

Dan*_*sen 8 ajax https jquery nginx

我在我的网站上做了一些非常基本的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);
            }
        });
    });
});
Run Code Online (Sandbox Code Playgroud)

该页面通过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.
Run Code Online (Sandbox Code Playgroud)

我能想到的唯一其他相关信息是我正在让nginx从http://larsendt.com进行301重定向到https://larsendt.com,但我不知道这会怎样破坏任何东西(我相信这是相当标准的做法).

如果你想要一个现场演示,破解版仍然在https://larsendt.com/jsontest.

无论如何,提前谢谢.

Pop*_*les 15

尝试修复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
Run Code Online (Sandbox Code Playgroud)