标题,内容类型默认为浏览器,CLI,应用程序

时间:2016-03-12 16:20:02

标签: php http content-type

每个浏览器都定义了"拥有"默认情况下,如果不是由标头自己的Content-Type发送。例如,Firefox返回text/html; charset=utf-8

如果我在空白页面上检查Firefox并重新加载一些PHP文件,它将返回text/html; charset=utf-8内容类型。

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

我和DEFAULT混淆了`Content-Type'或者,如果未由客户端定义或发送HTTP标头Content-Type,我可以找到所有默认内容类型标头的列表。

例如,使用哪个应用程序请求RFC 822的标头,如text/plain; charset=us-ascii

  1. 我可以做的是首先从浏览器获取可用标头(例如:text/plain;text/html),然后在text/plain的内容类型中设置(如果存在)。

  2. 如果没有发送标题,我想知道默认情况下浏览器/ cli应该是哪种内容类型。所有用户代理的Content-Type的所有默认列表都可能?

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

1 个答案:

答案 0 :(得分:0)

我的解决方案就是这样:

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

    text/html
    

    返回内容类型:text/html

    如果不存在,请检查

    */*
    

    返回内容类型:

     text/plain; us-ascii
    
      

    这是RFC 822:   http://mattryall.net/blog/2008/03/default-content-type

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

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

    text/plain; us-ascii
    
      

    这是CLI的接受,应该是RFC 822定义的ASCII。

  3. 较早的浏览器(例如SAFARI)会检查.htm等网址中的扩展名,然后以text/html以其他方式返回text/plain。默认情况下,较新的浏览器为text/html

  4. 如果未定义Firefox 2,则返回application/*,因此在某些情况下,您可以使用USER_AGENT进行检查,然后按默认设置进行设置。这是旧浏览器,你应该避免这种情况。

  5. 我写了这个脚本并且运行正常。如果是强制脚本并且是针脚,则应发送标题。

  6. 如果你有一些建议,或者我误解了一些,请纠正我。