Ajax与C ++ http服务器断开连接

时间:2012-11-09 09:55:03

标签: javascript c++ linux xmlhttprequest

我自己做了一个简单的C ++应用程序,它通过HTTP流式传输数据。当我在浏览器中打开服务器IP和端口时,我可以在浏览器窗口中看到该流。但是,从浏览器到C ++服务器的任何XHR请求都会在收到标头后立即从客户端自动关闭。 使用TELNET或PHP甚至没有任何脚本的浏览器都可以毫无问题地为我提供流数据。 将Ajax连接到生成虚拟流的PHP脚本也可以。

可能导致此问题的原因是什么? 它可能是由发送的第一个字节'\ 0'引起的吗? 或者它可能是由于使用的端口不是80?

C ++服务器和PHP脚本都在同一个Debian Linux机器上运行。 JS脚本已经在多种浏览器中进行了测试,包括Opera,Mozzila Firefox和Chrome。

服务器发送theese标题:

write(*con, "HTTP/1.1 200 OK\n",16);
write(*con, "X-Powered-By: Darker\n",21);
write(*con, "Pragma: no-cache\n",17);
write(*con, "Content-Type: text/plain; charset=\"utf-8\"\n",42);
write(*con, "Connection: keep-alive\n",23);

好的,所以在Wireshark和Opera DragonFly的帮助下,我分开了几个问题:

  • HTTPRequest中的“responseText”总是“”(空字符串),尽管在Wireshark中我可以很容易地看到正确接收的数据。
  • 接收响应时,“readyState”始终为4,即使该流尚未从服务器端结束。

1 个答案:

答案 0 :(得分:1)

您应该指明内容长度标头,以字节为单位指示流的确切大小。此外,出于好奇,您是否流式传输纯文本(如您的内容类型所示)?如果是,由于\r\n\r\n在HTTP

中具有含义,因此不具有内容长度可能是问题