函数中允许哪些标题?

时间:2011-10-26 07:55:36

标签: php http-headers

允许从函数内部设置哪种标头? 如果我从函数内部为图像设置MIME类型,这是可以的吗?

示例:

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

如果从函数内部设置标题,是否有任何优点或缺点?什么是最佳实践?

非常感谢你。

3 个答案:

答案 0 :(得分:4)

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

最佳做法是不要在函数中执行此操作,除非明确标题被修改,并且它不仅仅是偶然发生的副作用。

答案 1 :(得分:1)

只要您不向浏览器发送任何数据,您就可以随意添加任何标题。虽然浏览器包含X-What: Ever等自定义标题不会有所作为。

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

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

使用此方法的优点是,每次创建要发送到浏览器的图像时,都不必重复header(..)

但是,从下面的评论判断(“创建图像并将其破坏”),听起来并不像是要向浏览器显示图像(显示为“发送原始图像”,而不是“显示一个带有图像的HTML页面”)。在这种情况下,请不要发送header,因为它可能会混淆浏览器。

答案 2 :(得分:0)

  

允许在函数内设置哪种标题?

任何

发送内容后无法设置标题,但是如果使用某个功能则无关紧要。

  

如果从函数内部设置标题,是否有任何优点或缺点?

与使用其他任何功能相同。