soap-response:在 http-header 中是必需的 Content-Length


soap-response: is Content-Length required in http-header?

我在 w3.org 没有找到答案。

几乎所有示例都包含 soap-response http-header 中的内容长度。

第一个问题:但是在技术上有必要吗?

我正在努力使用一个肥皂服务,其中php-soap库(PEAR SOAP_Server)正在设置响应XML的正确内容长度,但之后的Lighttpd正在压缩内容,因此我得到的响应比内容长度小。

像soapUI这样的应用程序正在等待所有内容(由http-header设置)到达。

第二个问:

  • 谁在这个链中的行为/配置是错误的? php -> lighttpd -> soapUI
  • 是PHP代码设置解压缩的内容长度吗?
  • 是 lighttpd 压缩响应,但不覆盖或删除内容长度标头?
  • 还是肥皂UI,它不应该等待 15 秒才能获得更多内容?

编辑:进一步的调查显示,php脚本正在压缩内容本身,并且始终设置um压缩的内容长度,而不是lighttpd。

尽管如此,Tom van der Woerdts的回答还是很有帮助的。

第一个问题
不,因为 HTTP 1.1 规范不需要 Content-Length 标头,并且 SOAP 构建在 HTTP 之上。您的 SOAP 客户端可能需要它,但 SOAP 本身不需要。(SOAP 规范甚至不包含"长度"一词)

第二个问题
PHP在那里可能是错误的。它不应该设置Content-Length标头。Lighttpd 可能也有点错误,因为如果它更改内容,它应该真正覆盖 Content-Length 标头。soapUI可以纠正这个问题,因为SOAP是基于XML的,XML有一个非常明确的EOF(结束标记)。

我建议不要让 PHP 设置Content-Length标头。