【问题标题】:Interpreting Accept Headers as intended in IE and Webkit在 IE 和 Webkit 中按预期解释 Accept Headers
【发布时间】:2009-09-09 06:49:54
【问题描述】:

我开发了一个 Web 应用程序,它以客户端在 HTTP Accept Headers 中指定的格式响应数据。使用 Firefox 时一切正常,但是当我想在 Chrome 和 IE 上检查我的 CSS / HTML 时,他们都想下载索引页面,就好像它是一个未知的内容类型一样。

经过一些研究,我发现了this article,它指出 IE 在其 HTTP Accept 标头中发送了很多垃圾,其中包括一开始就列出了 image/* 内容类型。

这导致我的网络应用尝试将索引页作为image/jpeg 发送。

那么我如何知道何时忽略以及何时使用 Accept Headers?

【问题讨论】:

  • 如果您尝试使用 IE 访问页面,您的应用程序会选择哪种内容类型?即使 IE 的 Accept 标头可能被破坏,它仍应匹配“text/html”。
  • 它与 image/jpeg 匹配,因为该应用程序也可以提供图像。这是问题:P
  • 好的,我假设索引页面仅作为 HTML 存在。

标签: internet-explorer rest http-headers


【解决方案1】:

如果接受标头中存在具有相同权重的类型,最好的做法可能是应用您自己的服务器端权重。因此,如果您的 text/html 和 image/* 都具有相同的 q 值(或没有),您可以默认设置 text/html 首选项。

【讨论】:

  • 我现在想实现它,并且(再次)意识到问题是 IE 不会将 text/html 作为 MIME 类型发送,只是很多杂乱无章和 /我>。因此,即使我对 text/html 的权重超过 image/*,它仍然会选择 image/*,因为没有 text/html。
  • 你的 IE 究竟发送了什么?
  • 查看此链接。我也在问题中提到它:gethifi.com/blog/browser-rest-http-accept-headers
【解决方案2】:

我只会保留发送明显损坏的 Accept 标头的程序的黑名单,例如 IE 和 Safari(根据文章)。如果 User-Agent 标头与黑名单匹配,则忽略 Accept 标头,否则不要。

IE 的 Accept 标头的问题不在于它将 image/* 放在开头,而在于它并不表示它更喜欢 HTML 或 XHTML 而不是图像(通过 q 参数)。 AFAIK,Accept 标头中元素的顺序并不重要。

【讨论】:

  • 白名单:是的,没错,唯一的问题是 User-Agent 标头有时是不可信的,所以我尽量远离它们。元素顺序:我使用的解析器假定如果没有给出偏好,则第一个优先。
猜你喜欢
  • 2015-05-27
  • 1970-01-01
  • 1970-01-01
  • 2015-11-12
  • 1970-01-01
  • 2013-12-06
  • 2015-04-10
  • 2017-10-02
  • 1970-01-01
相关资源
最近更新 更多