带有CORS的IE9 jQuery Ajax返回“访问被拒绝”

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (29)

以下内容适用于所有浏览器除IE外(我正在IE9中测试)。

jQuery.support.cors = true;
...
        $.ajax(
            url + "messages/postMessageReadByPersonEmail",
            {
                crossDomain: true,
                data: {
                    messageId       : messageId,
                    personEmail     : personEmail
                },
                success: function() {
                    alert('marked as read');
                },
                error: function(a,b,c) {
                    alert('failed');
                },
                type: 'post'
            }
        );

我还有一个函数dataType: 'jsonp',但是我不需要在这个Ajax调用中返回任何数据。我的最后一招将是返回一些包装在JSONP中的JBberish,以使其工作。

有什么想法吗?为什么IE会搞砸一个不返回数据的CORS请求?

提问于
用户回答回答于

jQuery团队“没有计划在核心支持这一点,而且更适合作为插件。

那儿一个可以在jQuery中支持这一点的插件.

编辑功能$.ajaxTransport注册了一个运输工厂。使用传送器内部通过$.ajax执行请求。因此,我假设你应该可以打电话$.ajax像往常一样。

另外两个注:

对象XDomainRequest是从IE8引进并且不会在下面的版本中工作。

来自IE10 CORS使用普通XMLHttpRequest支持.

用户回答回答于

以下代码在Chrome、Firefox和IE 10中正确工作,但在IE9中失败。我只是简单地包含了脚本,现在它在IE9中自动工作。

var displayTweets = function () {
    $.ajax({
        cache: false,
        type: 'GET',
        crossDomain: true,
        url: Site.config().apiRoot + '/Api/GetTwitterFeed',
        contentType: 'application/json; charset=utf-8',
        dataType: 'json',
        success: function (data) {
            for (var tweet in data) {
                displayTweet(data[tweet]);
            }
        }
    });
};

扫码关注云+社区