IE 中的 HTTPS Ajax 请求问题(非跨域)
Posted
技术标签:
【中文标题】IE 中的 HTTPS Ajax 请求问题(非跨域)【英文标题】:Problems with HTTPS Ajax Request In IE (Not Crossdomain) 【发布时间】:2012-02-20 15:08:17 【问题描述】:我对仅在 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 中,错误函数返回“错误:访问被拒绝”。就像我说的那样,我对此完全感到困惑,所以任何见解或想法都会很棒。
【问题讨论】:
试试不带https://mydomain
。因此,请尝试将 URL 设为“/ajax/retrieve_transaction_details.php”。
我试过这个。无论出于何种原因,如果我没有指定绝对路径,其他浏览器就会尝试通过 HTTP 发出请求,从而也破坏了它。
也许添加一个浏览器检查,如果他们使用 IE 来实现兼容性,并且如果他们使用任何其他浏览器,则将其转发到你已经工作的代码。
首先,确认您没有设置它以便您从http://www.mydomain
加载页面并且您的AJAX 引用只是http://mydomain
或反之亦然——这可能被视为X 域。接下来,试试://mydomain/ajax/retrieve_transaction_details.php
不带http
/s
。
【参考方案1】:
我猜你在 html 的 head 部分中使用了 <base>
标记;对吧?
如果它指向 http
而不是 https
,则会破坏 IE。
【讨论】:
哇,原来如此。我完全忘记了我在标题模板中扔了那个标签。有趣的是它只在 IE 中破坏了它,但我想这对你来说是 IE。谢谢!【参考方案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);
);
这应该允许您发出请求,无论它是否是跨域的。
【讨论】:
看看这个帖子:***.com/questions/5241088/…以上是关于IE 中的 HTTPS Ajax 请求问题(非跨域)的主要内容,如果未能解决你的问题,请参考以下文章