使用PHP在LiteSpeed中设置自定义HTTP响应头

时间:2012-04-20 10:31:32

标签: php apache http-status-codes litespeed

我正在尝试设置自定义HTTP 1.0状态代码,以便通过AJAX(使用jQuery)返回更多描述性错误消息。

在PHP中我有类似的东西:

header( 'HTTP/1.0 909 Hello World' );
exit;

这在我的开发环境中使用Apache 2.2.15正常工作,但它不适用于运行LiteSpeed 5.5的生产网络服务器。而LiteSpeed则返回200 OK

使用此:

header( 'HTTP/1.0 404 Hello World' );
exit;

Apache使用上面的文本返回404。 LiteSpeed使用默认的“未找到”替换自定义文本。

知道如何在LiteSpeed中覆盖此功能以使其与Apache一样工作吗?我知道他们应该是可比较的网络服务器。

任何想法,请告诉我。

-P

1 个答案:

答案 0 :(得分:0)

首先,为什么HTTP 1.0而不是1.1?

其次,您正在尝试执行HTTP规范中未定义的操作。 LiteSpeed可能会检查要求发送的标头,并用一些默认值替换它无法识别的值。

您不应该尝试强制HTTP以非标准方式运行,只要您这样做,它就不再是HTTP。规范是为了确保不同人员在不同时间实施的软件可以互操作,如果不遵循规范,它应该如何表现完全未定义。

Apache让它不知道的标题是完全可以接受的行为,因此LiteSpeed拒绝让它通过的行为也是如此。在这种情况下,让恶魔飞出你的鼻子对于服务器来说也是有效的。什么是客户端意味着它无法识别的HTTP响应代码?

如果您需要在标头中发送其他信息,为什么不添加新标头?以下应该做。

header ('X-My-App-Header: Hello World!');