我开发了一个Web应用程序,它对来自托管Web应用程序的服务器的不同域中的服务器上的Web服务发出ajax请求。
我已将网络服务配置为执行飞行前检查,以设置必要的标头以允许跨域请求。
在Web应用程序中,我使用JQuery客户端来访问Web服务。我在Jquery命令上设置了属性以允许跨域访问。
$ .support.cors = true;
在Chrome中,一切正常。然而,在IE9中,跨域行为仅部分成功。所有获取请求都有效。但是使用内容类型的application / json发布请求失败,因为IE9拒绝使用除text / html之外的任何内容类型发布请求。 IE9在请求上切换内容类型,并且请求在服务器上发生400请求失败。
我已经阅读过使用IE10,跨域请求可以像Chrome一样工作。但在测试完之后,我发现IE10与IE9具有相同的行为。浏览器不会将内容类型设置为application / json。所以发布请求失败。
有没有人知道在IE10中是否可以使用除text / html之外的其他内容类型来执行跨域发布请求。这使得编写Web应用程序的功能比显示数据更加困难。
我是否需要在Jquery请求中进行其他设置?或者在飞行前服务?
答案 0 :(得分:0)
你的$ .ajax()调用是什么样的?您可以尝试将data: 'json'
添加到JQuery调用中,以强制数据类型为json。你也不需要设置$.support.cors = true;
,JQuery应该为你解决这个问题(但现在可以暂时保留它)。
答案 1 :(得分:-1)
我确实有内容类型param set data:'json'。 Chrome荣幸这一点,但IE切换到text / html。我曾经读过,这是IE9及以下版本中的一个已知问题,但IE10将使用与Chrome相同的ajax实现,但显然情况并非如此。