小编典典

AJAX响应在C ++中无效,但在Apache中有效

ajax

我想制作一个用C
++编写的服务器来支持我的游戏。我学习了套接字的基础知识,并编写了一个运行良好的基本聊天程序。现在,我想创建一个像Apache这样的HTTP服务器,但是仅用于AJAX请求-
响应部分。

我认为刚开始时,我复制了一个Apache响应文本,并使用C ++服务器程序发送了准确的响应。

问题是浏览器(Firefox)连接到apache,并且一切正常,除了所有请求均得到正确的响应。

但是,如果我使用C ++客户端发送此消息,则FireBug告诉我响应状态为OK(200),但没有实际的响应文本。(这怎么可能?)

此响应文本与apache发送的文本完全相同。我做了一点点比较,它们是相同的。

php文件至此是原始回复

<?php echo "AS";echo  rand(0,9); ?>

以及原始的源代码:

不需要jQuery。

main.cpp中有很多垃圾代码,例如main3和main4函数,这些不影响结果。

我知道C ++代码中的响应内容不是很好,因为连接关闭不是最好的。我稍后将解决此问题,我想先发送成功回复。


阅读 253

收藏
2020-07-26

共1个答案

小编典典

问题:通过Apache在端口80上提供index.html。浏览器将其加载并开始发送请求。请求文件(程序)在另一个端口8888端口上,该端口已经是
另一台服务器 ,该 服务器 不启用ajax(不知道为什么)来获取发布数据。该程序仍可以与 远程 服务器通信,但看不到响应。

整整一天后,我用提琴手程序进行了很多测试,捕获了响应,然后这种方法对我有所帮助。

我使用了提琴手程序来捕捉好答案,并捕捉坏的答案。他们是一样的。在此之后,我关闭了我的套接字应用程序,并强制提琴手自动响应,并且“错误”答案中的答案仍然无效。因此,在那之后,我用好事代替了坏事,没有任何障碍。在:8888端口上,带有好文字的错误答案仍然很糟糕,但是在原始:80端口上,另一个很好,但是它们绝对是相同的,并且相同的程序将其发送给了我(提琴手),我认为如果响应了,则会丢失一些内容不是在同一服务器地址上(甚至不是同一端口)。

在此之后,我认为可能是缺少头文件,或者类似的东西。所以我将Apache配置为侦听index.html中加载的80端口。此后,我关闭了apache服务器,将端口更改为8888,然后运行ajax请求,我意识到它们是错误的,但是它们是由apache发送的,并且所有previorus请求(在同一端口上)都很好。所以问题只在于ajax的东西:D

非常感谢Tony Lee的 Fiddler 建议。

实际上没有解决方案,但是有一个答案说明问题存在的原因。

2020-07-26