0

我正在尝试设置自定义 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。

4

1 回答 1

0

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

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

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

Apache 让一个它不知道的标头通过是完全可以接受的行为,LiteSpeed 拒绝让它通过的行为也是如此。在这种情况下,让恶魔飞出你的鼻子也是服务器做的一件有效的事情。客户端如何处理它无法识别的 HTTP 响应代码?

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

header ('X-My-App-Header: Hello World!');
于 2012-04-20T11:12:57.243 回答