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

时间:2017-12-07 20:31:19

标签: jquery asp.net ajax https mixed-content

我知道有些东西是通过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'是通过HTTPS加载的,但是请求了一个不安全的XMLHttpRequest端点' http://www.example.com/MyService.asmx?param=paramValue'。此请求已被阻止;内容必须通过HTTPS提供。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

有几件事可能会触发此错误。

首先,将构建您网址的javascript更改为

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

(在MyService.asmx之前删除斜杠,在结尾处删除分号)

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