【问题标题】:What headers are allowed in functions?函数中允许使用哪些标头?
【发布时间】:2011-10-26 07:55:36
【问题描述】:

允许从函数内部设置什么样的标题? 如果我在函数内部为图像设置 MIME 类型可以吗?

例子:

function createImage($parameters) {
    /**
     * Here process parameters
     */
    // Set header
    header ('Content-Type: image/png');
    // create the image an destroy it
}

如果从函数内部设置标头,有什么优点或缺点吗?最佳做法是什么?

谢谢你。

【问题讨论】:

    标签: php http-headers


    【解决方案1】:

    除了通常的“已经发送的标头”之外没有任何技术限制,除非大多数人不希望函数修改响应标头,除非它是专门设计和记录的。

    最好的做法是不要在函数中执行此操作,除非很明显正在修改标头,并且它不仅仅是偶然发生的副作用。

    【讨论】:

      【解决方案2】:

      只要您不向浏览器发送任何数据,您就可以随意包含任何您想要的标题。尽管浏览器包含 X-What: Ever 之类的自定义标头不会有什么不同。

      为避免在您之前意外输出数据时出现错误,请使用以下内容:

      if (!headers_sent()) {
          header('Content-Type: image/png');
      }
      

      使用这种方法的好处是您不必在每次创建要发送到浏览器的图像时都重复header(..)

      但是,从下面的评论来看(“创建图像并销毁它”),听起来您并不想向浏览器显示图像(显示的意思是“发送原始图像”,而不是“显示一个带有图像的 HTML 页面”)。在这种情况下,不要发送header,因为它可能会混淆浏览器。

      【讨论】:

      • if (!headers_sent()) header('Content-Type: image/png'); - 嗯,如果我不这样做,我真的需要设置标题,然后我会从图像生成中得到一堆奇怪的文本,所以需要在正确的上下文中设置信息才能有意义。
      【解决方案3】:

      允许从函数内部设置什么样的标头?

      任何。

      发送内容后不能设置header,但使用不使用函数无所谓。

      如果从函数内部设置标头,有什么优点或缺点吗?

      与将函数用于其他任何事情相同。

      【讨论】:

        猜你喜欢
        • 2018-05-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-15
        • 2016-09-01
        • 2010-12-30
        • 1970-01-01
        相关资源
        最近更新 更多