1

我开发了一个 Web 应用程序,它向与托管 Web 应用程序的服务器不同域中的服务器上的 Web 服务发出 ajax 请求。

我已将 Web 服务配置为进行飞行前检查以设置必要的标头以允许跨域请求。

在 Web 应用程序中,我使用 JQuery 客户端来访问 Web 服务。我已经在 J​​query 命令上设置了属性以允许跨域访问。

$.support.cors = 真;

在 Chrome 中,这一切都很好。然而,在 IE9 中,跨域行为只是部分成功。所有获取请求都有效。但是内容类型为 application/json 的 post 请求失败,因为 IE9 拒绝使用除 text/html 之外的任何 content-type 发出 post 请求。IE9 切换请求的内容类型,请求在服务器上失败,请求为 400 错误。

我读过 IE10 的跨域请求可以像在 Chrome 中一样工作。但是在刚刚测试之后,我发现 IE10 与 IE9 具有相同的行为。浏览器不会将 content-type 设置为 application/json。所以发布请求失败。

有谁知道在 IE10 中是否可以使用除 text/html 之外的其他内容类型进行跨域发布请求。这使得编写除了显示数据之外的其他任何事情的 Web 应用程序变得极其困难。

我需要对 Jquery 请求进行其他设置吗?还是在服务飞行前?

4

2 回答 2

0

您的 $.ajax() 调用是什么样的?您可以尝试添加data: 'json'到您的 JQuery 调用以强制数据类型为 json。您也不需要设置$.support.cors = true;,JQuery 应该为您解决这个问题(但现在可以保留它)。

于 2013-03-12T15:05:06.633 回答
-1

我确实有内容类型参数集数据:'json'。Chrome 尊重这一点,但 IE 切换到 text/html。我读过这是 IE9 及以下版本中的一个已知问题,但 IE10 将使用与 Chrome 相同的 ajax 实现,但显然情况并非如此。

于 2013-03-13T16:15:12.157 回答