我正在尝试设置自定义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
答案 0 :(得分:0)
首先,为什么HTTP 1.0而不是1.1?
其次,您正在尝试执行HTTP规范中未定义的操作。 LiteSpeed可能会检查要求发送的标头,并用一些默认值替换它无法识别的值。
您不应该尝试强制HTTP以非标准方式运行,只要您这样做,它就不再是HTTP。规范是为了确保不同人员在不同时间实施的软件可以互操作,如果不遵循规范,它应该如何表现完全未定义。
Apache让它不知道的标题是完全可以接受的行为,因此LiteSpeed拒绝让它通过的行为也是如此。在这种情况下,让恶魔飞出你的鼻子对于服务器来说也是有效的。什么是客户端意味着它无法识别的HTTP响应代码?
如果您需要在标头中发送其他信息,为什么不添加新标头?以下应该做。
header ('X-My-App-Header: Hello World!');