我试图建立一个从Silverlight应用程序到PHP页面的HTTP持久连接(即无需创建每个HTTP请求新的TCP连接)由Apache服务器托管.
为此,我需要Web服务器发送其HTTP响应,并将"Connection"标头设置为"Keep-alive".客户端,似乎没有要任何问题,因为由Silverlight中提供的网络API基本上是浏览器的网络capabilies的包装,从我读过:所以如果浏览器支持HTTP 1.1和连接:保持活动默认情况下,它的请求,没关系.Content-Length也已明确定义,因此服务器知道何时必须发送响应.但是,服务器对PHP请求的响应系统地将"连接:"设置为"关闭",从而结束连接并阻止持久连接.
我已经尝试了一些解决这个问题的方法:不同的方法(GET和POST),在我的脚本开头用以下PHP代码显式给出响应的"Connection:keep-alive":
header("Connection: Keep-alive");
Run Code Online (Sandbox Code Playgroud)
后者将预期的标头添加到响应中,这很好,但是附加的"连接:关闭"仍然会在响应标头中添加.
它是PHP或Apache的一个特性强制执行"关闭"(出于某些安全性或性能目的,我猜)或者我只是在这里遗漏了一些东西?
提前致谢.
PS:通过嗅探数据包,我注意到没有多少网站使用"保持活动"并重新建立TCP连接.Keepalive不是HTTP 1.1下的默认和首选行为吗?