【问题标题】:IE8: Access deniedIE8:访问被拒绝
【发布时间】:2015-08-03 14:25:36
【问题描述】:

我正在尝试使用 jquery/post 访问 API,但它在 IE8 中不起作用。它仅在 IE8 中引发 Access denied 错误。

js代码:

var url = 'http://somecomp.cartodb.com:80/api/v1/map?map_key=xxxxxxxxxxxxxxxxxxxx&stat_tag=API';
    var data = //some long data of length greater than 3000
    $.ajax({
        crossOrigin: !0,
        type: "POST",
        method: "POST",
        dataType: "json",
        contentType: "application/json",
        url: url,
        data: JSON.stringify(data),
        success: function(a) {
            console.log('success');
        },
        error: function(a) {
            console.log('error');
        }
    })

如果我添加 ?callback=?在 url 的末尾,它仍然会触发错误回调,但是 statusText: 'success' 和 code: 200

这里是完整代码:http://textuploader.com/ato0w

【问题讨论】:

  • 你能试试把dataType改成jsonp吗?
  • 不,但我认为 jsonp 仅适用于 GET 请求...成功我收到错误

标签: javascript jquery internet-explorer-8


【解决方案1】:

dataType 更改为jsonp 将允许您发出跨域请求。这仅适用于 GET 请求。

如果您使用 CORS 访问跨域资源,请尝试添加以下行:

$.ajax({
     crossDomain: true, // replace "crossOrigin: !0;"
});

如果这对您不起作用,请尝试在 $.ajax() 调用上方添加以下行。

jQuery.support.cors = true;

【讨论】:

  • 哦!由于数据对象很大,我需要发送一个发布请求。
  • 对不起,我的错误。你能检查一下更新的答案吗?
  • 你的jQuery是什么版本的?
  • 我已经添加了完整的代码,链接:textuploader.com/ato0w。请立即检查。使用 jquery 1.7.2 版
  • 显式设置crossDomain 几乎在任何时候都是毫无意义的。仅当您发出 same 源请求并将 HTTP 重定向到不同源时才重要。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-25
  • 1970-01-01
  • 1970-01-01
  • 2011-01-17
  • 2011-06-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多