为什么 Chrome for iOS 插入 image/webp content-type?

Why does Chrome for iOS insert image/webp content-type?

我有一个移动网络应用程序正在通过 $.get() 发出 AJAX 请求。 Safari iOS 请求成功,但 iOS Chrome 请求失败,状态为 0 且 statusText "error".

在我的服务器上使用 tcpdump,我可以看到 Safari sends/receives 以下 headers:

Accept: */*    (outgoing)

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

Chrome for iOS 将 "image/webp" 的 mime 类型添加到传出的 Accept: header 并且 Content-Type returned 是"image/webp":

Accept: */*,image/webp  (outgoing)

HTTP/1.1 200 OK
Content-Type: image/webp   (returning)

通读 jQuery 代码,$.get() 似乎只解析 AJAX 响应中的某些内容类型,所以我认为图像 mime 类型刚刚被拒绝,导致 "error" 状态。

在 Chrome 对 iOS 的请求到达我的服务器时,还有这个 header:

通过:1.1 Chrome-Compression-Proxy

...表示 iOS 的 Chrome 已将请求发送到 Google 代理服务器以服务该请求(信息 https://support.google.com/chrome/answer/3517349?hl=en)。好像这个代理服务器正在设置额外的内容类型,并且内容类型在返回的路上被 return 编辑为 image/webp?服务器代码为RESTful Spring 3;我确实在控制器代码中将内容类型设置为 "text/plain",但不知何故没有被采用,它仍然 returning 为 "image/webp"。

有没有人遇到过类似的问题并找到了解决方案?我需要 return Content-Type of "text/plain" 才能将数据正确返回到我的应用程序。此请求在 Chrome 和 Android 以及 AFAIK 上正常工作,尚未为此执行 tcpdump,但该应用程序正常工作;仅在 Chrome 上失败 iOS.

我们遇到了同样的问题:Chrome for iOS 更喜欢 webp,所以它发送它的 headers 作为 Accepts: image/webp, */*;q=0.8。实施该更改的人员显然从未考虑过影响,因此这导致相当多的 API 到 return 到 415

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

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