HTTPS Ajax请求在IE中出现问题(非跨域)

7

我在处理一个只在IE中出现的HTTPS Ajax调用问题时遇到了麻烦。IE似乎认为我正在进行跨域请求,但实际上并非如此。以下代码是从页面 https://mydomain/customer_profile.php 调用的:

$.ajax({
    type: 'post',
    url: 'https://mydomain/ajax/retrieve_transaction_details.php',
    data: /* my data is here */,
    success: function(response){
        // do something with the response
    },
    error: function (xhr, ajaxOptions, thrownError){
        alert(xhr.status);
        alert(thrownError);
    }
});

除了IE浏览器,这个请求在其他浏览器中都可以正常工作。在IE中,错误函数返回“错误:访问被拒绝”。就像我说的,我对此完全感到困惑,所以任何见解或想法都将是很好的。


1
尝试不使用 https://mydomain。因此,请使用URL为“/ajax/retrieve_transaction_details.php”进行尝试。 - Mike Lentini
我已经尝试过了。不知何故,如果我不指定绝对路径,其他浏览器会尝试通过HTTP发出请求,从而在这些浏览器中也破坏它。 - Jim D
也许可以添加一个检查浏览器的功能,如果使用IE浏览器,则按照兼容性路径进行操作,如果使用其他浏览器,则将其转发到您已经工作的代码。 - HenryGuy
首先,请确认您没有将页面从http://www.mydomain加载,而您的AJAX引用只是http://mydomain或反之亦然 - 这可能被视为X域。接下来,请尝试使用://mydomain/ajax/retrieve_transaction_details.php,不要加上http/s - DaveRandom
2个回答

3

我猜您正在使用head部分中的<base>标签,对吗?

如果它指向的是http而不是https,那么它会破坏IE


哇,确实是这样。我完全忘记了在我的标头模板中添加了那个标签。有趣的是它只在IE上出问题了,但我猜那就是IE的做法。谢谢! - Jim D

2

尝试在您的请求中将crossDomain设置为true,如下所示:

$.ajax({
    type: 'post',
    url: 'https://mydomain/ajax/retrieve_transaction_details.php',
    data: /* my data is here */,
    crossDomain: true,
    success: function(response){
        // do something with the response
    },
    error: function (xhr, ajaxOptions, thrownError){
        alert(xhr.status);
        alert(thrownError);
    }
});

这应该使您能够发起请求,无论它是否跨域。

请查看此帖子:https://dev59.com/XW435IYBdhLWcg3wvyw5 - Phil W

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接