gpt4 book ai didi

javascript - Ajax 从 C++ http 服务器断开连接

转载 作者:太空狗 更新时间:2023-10-29 23:07:16 25 4
gpt4 key购买 nike

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

是什么导致了这个问题?会不会是发送的第一个字节是'\0'导致的?还是使用的端口不是80导致的?

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

服务器发送这些 header :

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,即使流尚未从服务器端结束。

最佳答案

您应该指明内容长度 header ,以字节为单位指示您的流的确切大小。此外,出于好奇,您是否流式传输纯文本(如您的内容类型所示)?如果是,则没有内容长度可能是问题所在,因为 \r\n\r\n 在 HTTP 中有意义

关于javascript - Ajax 从 C++ http 服务器断开连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13305749/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com