我正在使用jQuery的ajax .get方法从我的服务器检索数据。在Chrome中工作得很完美,但在IE9中,它不会发送Cookie标头并且会破坏应用程序。知道为什么吗?这是jQuery代码:
$.get(this.server + 'rest/photo/' + this.profileId + '/count', function(data) {
$('#imageCount').html(data);
});
答案 0 :(得分:1)
我在这里遇到同样的问题,我无法使用jQuery .ajax()
函数。我找到的唯一解决方法是:
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8" />
您可以将此元标记添加到页面顶部以使其正常工作。但它不是一个好的解决方案。我认为问题是IE9中的xmlhttprequest
对象是不同的,因此jQuery无法找到相应的对象,因此ajax不会触发。
答案 1 :(得分:0)
多年以后,我在IE9上遇到类似的问题与IE9相关,遗憾的是,IE9仍然存在。
我尝试过的每一个浏览器,包括IE10 +,都可以将cookie传递给我的后端,但IE9只会放弃它们。它似乎与cookie上的属性无关。主页面和API在相同的域上,并且cookie匹配,方案是相同的。我没有用IFRAMES做任何事情,所以P3P 'potato' hack没有帮助。
所以我开始研究IE9的内容可能有所不同。 This Microsoft post非常具有启发性,并概述了IE8和IE9帮助锁定CORS安全漏洞所做的所有事情:
关于cookie的最后一项让我思考,如果IE9认为我正在提出跨站请求怎么办?它当然看起来像是以这样精美的方式被击落。我已经检查了一些显而易见的事情,比如方案和域名,但也许我没有检查过所有内容。
解决方案?具体来说,我使用reqwest作为我的ajax库。它有一个跨源参数,由于某种原因,我将其设置为true
。将它(正确)设置为false就可以了 - 我的所有cookie都是由服务器选取的。所以这是一个愚蠢的错误,但我学到了一两件事。
希望这有助于某人!