Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP在LiteSpeed中设置自定义HTTP响应头_Php_Apache_Http Status Codes_Litespeed - Fatal编程技术网

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

使用PHP在LiteSpeed中设置自定义HTTP响应头,php,apache,http-status-codes,litespeed,Php,Apache,Http Status Codes,Litespeed,我试图设置一个自定义的HTTP1.0状态代码,以便通过AJAX(使用jQuery)返回更多描述性错误消息 在PHP中,我有如下内容: header( 'HTTP/1.0 909 Hello World' ); exit; 这在使用Apache2.2.15的开发环境中正常工作,但在运行LiteSpeed 5.5的生产Web服务器上不起作用。LiteSpeed返回一个200 OK 使用此选项: header( 'HTTP/1.0 404 Hello World' ); exit; Apache返

我试图设置一个自定义的HTTP1.0状态代码,以便通过AJAX(使用jQuery)返回更多描述性错误消息

在PHP中,我有如下内容:

header( 'HTTP/1.0 909 Hello World' );
exit;
这在使用Apache2.2.15的开发环境中正常工作,但在运行LiteSpeed 5.5的生产Web服务器上不起作用。LiteSpeed返回一个
200 OK

使用此选项:

header( 'HTTP/1.0 404 Hello World' );
exit;
Apache返回带有上述文本的
404
。LiteSpeed将自定义文本替换为默认的“未找到”

您知道如何在LiteSpeed中覆盖此功能,使其与Apache的工作方式相同吗?我知道它们应该是可比较的Web服务器

有什么想法,请告诉我


-p.

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

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

你不应该强迫HTTP以非标准的方式运行,一旦你这么做了,它就不再是HTTP了。这些规范是为了确保由不同的人在不同的时间实现的软件可以互操作,如果不遵循规范,它应该如何运行是完全没有定义的

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

如果需要在标题中发送其他信息,为什么不添加新标题?下面应该做些什么

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

所有有效点,也许我应该采用“X-Custom-Error:Hello World”,以实现更好的跨平台兼容性。作为对用户如何处理的响应,我随后解释/处理响应,以提供更具描述性的错误消息,因此这不是真正的问题。尽管如此,我认为这可能不是最佳实践,因此希望有更好的替代方案来实现上述目标。正如我所建议的,您可以附加自定义头(名称以X-开头的头),以传递HTTP规范允许您返回的信息之外的任何信息。HTTP也有一组非常丰富的预定义状态代码,因此我建议从最适合这种情况的可用状态代码中返回一个有效的HTTP状态代码,以及一个包含更多信息的X头。