3

我尝试了我在谷歌上找到的所有东西来让它工作,但没有成功。

我正在尝试向不同域上的服务器调用 HTTP 请求。
它适用于所有浏览器,即使在 IE10 上也是如此。但是,在 IE9 及更低版本上,它似乎无法正常工作。
在 IE9 及更低版本上,它只发送没有正文的所有方法的标头。

我正在使用 jQuery 进行 AJAX 调用,该调用可以从不同的域调用(实际上它可以来自任何域)。
一个 JavaScript 示例:

$.ajax({
    url: "http://api.domain.com/path",
    type: "POST",
    crossDomain: true,
    cache: false,
    data: JSON.stringify({data:"some body data in a json format"}),
    dataType: "json",
    contentType: "application/json",
    success: function(data, textStatus, jqXHR){
        console.log("Response data: ", data, textStatus, jqXHR);
    },
    error: function(jqXHR, textStatus, errorThrown){
        console.error("AJAX error: ", jqXHR, textStatus, errorThrown);
    }
});

IE9 上的请求:

POST /path HTTP/1.1
Origin: http://[some domain]
Accept-Language: en-GB
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)
Host: api.domain.com
Content-Length: 0
DNT: 1
Connection: Keep-Alive
Cache-Control: no-cache
Accept: */*

[no request body]

服务器的响应是:

HTTP/1.1 500 Internal Server Error
Server: MochiWeb/1.1 WebMachine/1.9.2 (someone had painted it blue)
Date: Mon, 17 Jun 2013 11:24:26 GMT
Content-Type: text/html
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true

我正在使用jQuery.XDomainRequest插件,但它没有帮助。
我也设置好jQuery.support.cors = true;了,但这也无济于事。
我认为在 IE10 上它在 POST 请求之前发送一个 OPTIONS 请求很重要,而在 IE9 上只是 POST 请求。

有什么建议么?

4

1 回答 1

0

我不知道这个 jQuery 插件。但是将 ajax 帖子发送到跨域是一个安全问题。所以浏览器不支持这个。令人惊奇的是,您可以管理将数据发布到其他域。

下面的链接可能会有所帮助 为什么跨域 Ajax 是一个安全问题?

于 2013-06-25T12:04:42.713 回答