https 上的混合内容,因为不安全的 XMLHttpRequest 请求

Mixed-Content over https because an insecure XMLHttpRequest request

我知道有些东西是通过 http 而不是 https 调用的,但实际上我不知道如何解决这个问题!

$.ajax({
    type: "GET",
    url: window.location.href.substring(0, location.href.lastIndexOf("/") + 1) + '/MyService.asmx/MyMethod';,
    data: 'param=' + JSON.stringify({ "myParam": value.trim() });,
    dataType: "text",
    error: function (XMLHttpRequest, textStatus, errorThrown) {
        alert("Request: " + XMLHttpRequest.toString() + "\n\nStatus: " + textStatus + "\n\nError: " + errorThrown);
    }, ...

我什至试过这种方法但没有成功:

Url: '//MyService.asmx/MyMethod';

给出的错误是: 混合内容:位于“https://www.example.com/MyPage.aspx' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://www.example.com/MyService.asmx?param=paramValue”的页面。此请求已被阻止;内容必须通过 HTTPS 提供。

有什么建议吗?

有几种情况可能会触发此错误。

首先,将构成您的 url 的 javascript 更改为

window.location.href.substring(0, location.href.lastIndexOf("/") + 1) + 'MyService.asmx/MyMethod'

(去掉MyService.asmx前的斜杠和末尾的分号)

尝试 console.log() url 此代码生成并尝试在您的浏览器中是否可以通过 HTTPS 访问它。可能发生的情况是,如果无法访问 url,则可能会重定向到 non-https url。您还可以使用浏览器调试工具(例如 chrome 检查网络选项卡)来查看您的请求发生了什么(查找状态代码,检查响应 headers 等)。