Headers、Content-Types 浏览器、CLI、应用程序的默认值

Headers, Content-Types defaults for browsers, CLI, apps

如果 header 自己的 Content-Type 没有发送,则每个浏览器都默认定义了 "own"。例如,Firefox returns text/html; charset=utf-8.

如果我在空白页面上检查 Firefox 并重新加载一些 PHP 文件,它将 return text/html; charset=utf-8 content-type.

这是从 Firefox 定义的?还是 APACHE 服务器?

我对 DEFAULT `Content-Type' 感到困惑,或者我在哪里可以找到所有默认内容类型的列表 headers 如果不是由客户端定义或发送 HTTP header Content-Type.

例如,在哪个应用程序上使用 RFC 822 请求 header,如 text/plain; charset=us-ascii


  1. 我能做的是首先从浏览器获取可用的 headers(例如:text/plain;text/html),然后在 Content-Type 中设置为 text/plain如果存在。

  2. 如果没有发送 header 我想知道哪个 content-type 默认应该是 browser/cli。所有用户代理的 Content-Type 的所有默认列表可能吗?


真正的问题:如何使用 PHP 从浏览器默认获取 Content-Type 但不接收 NULL。在浏览器上,如果你 refresh 你会看到 Content-Type header 但在 PHP 你不会收到。

我的解决方法是这样的:

  1. 检查浏览器是否存在HTTP_ACCEPT,如果存在例如:

    text/html
    

    制作 return Content-Type: text/html

    如果不存在检查

    */*
    

    制作 returns Content-Type:

     text/plain; us-ascii
    

    This is by RFC 822: http://mattryall.net/blog/2008/03/default-content-type

    然后,如果未定义则使用 text/plain.

  2. 如果 HTTP_ACCEPT 不存在则使用 RFC 822 声明为:

    text/plain; us-ascii
    

    This is accept for CLI and should be ASCII defined by RFC 822.

  3. 较旧的浏览器(例如 SAFARI)会在 URL(例如 .htm 中检查扩展名,然后应该 text/html 以其他方式 returns text/plain。较新的浏览器默认为 text/html.

  4. Firefox 2 returns application/* 如果没有定义所以在某些情况下你可以使用 USER_AGENT 检查然后设置默认声明。这是旧浏览器,您应该避免使用它。

  5. 我写了这个脚本并且运行良好。 Header如果是脚本强制发送,如果是needle,应该发送。

如果你有什么建议或者我说错了请指正。