为什么Chrome for iOS插入图片/ webp内容types?

我有一个移动的networking应用程序,通过$ .get()发出一个AJAX请求。 Safari iOS的请求成功,但状态为0且状态文本为“错误”的iOS iOS版本失败。

在我的服务器上使用tcpdump,我可以看到Safari发送/接收以下头文件:

Accept: */* (outgoing) Content-Type: text/plain;charset=ISO-8859-1 (returning) 

Chrome for iOS在出站的Accept:标题中添加一个MIMEtypes的“image / webp”,返回的Content-Type为“image / webp”:

 Accept: */*,image/webp (outgoing) HTTP/1.1 200 OK Content-Type: image/webp (returning) 

通过阅读jQuery代码,它看起来像$ .get()只parsingAJAX响应中的某些内容types,所以我在考虑一个图像MIMEtypes被拒绝,导致“错误”状态。

在iOS版Chrome的请求到达我的服务器时,还有这个标题:

Via:1.1 Chrome-Compression-Proxy

…这表示iOS版Chrome已经向Google代理服务器发送了请求,以处理请求(info https://support.google.com/chrome/answer/3517349?hl=zh-CN )。 看起来像这个代理服务器设置额外的内容types,不知何故内容types返回作为图像/ WebP在回来的路上? 服务器代码是RESTful Spring 3; 我在控制器代码中将内容types设置为“text / plain”,但不知何故,这并没有被采用,它仍然以“image / webp”的forms返回。

有没有人有类似的问题,并find了解决办法? 我需要返回Content-Type的“text / plain”才能正确地将数据返回给我的应用程序。 这个请求也适用于Android的Chrome以及AFAIK,没有做过tcpdump,但该应用程序正常工作; 只在iOS版Chrome上失败。

我们遇到了同样的问题:iOS版Chrome浏览器更喜欢使用webp,因此它会将其标题作为Accepts: image/webp, */*;q=0.8 。 实施这种改变的人显然从来没有想过这个影响,所以这导致相当多的API返回一个415

有关更多信息,请参阅: https : //code.google.com/p/chromium/issues/detail?id=169182

最后,我们修改了服务器本身,因为它会返回一个415.在响应方面,它应该都一切顺利。