我正在尝试开发一个非常基本的网络服务器,每个网页都受到保护,但身份验证是通过单独的套接字连接/协议完成的。
我试图使用libmicrohttpd进行此操作,我希望最终的过程是:
第一次连接时会显示目标网页
对所有链接页面的请求生成一条http 102消息(以避免在处理身份验证请求时出现带有http 403消息和超时的身份验证请求)
带外身份验证过程已启动并独立于网络服务器运行
当验证过程返回时,根据结果发送相应的消息
我对这个级别的libmicrohttpd和http dev都有点新意,我以为我可以发送带有102状态代码的respsosne
ret = MHD_queue_response (connection, MHD_HTTP_PROCESSING, response);
然后稍后在同一函数调用中发送MHD_HTTP_OK
中的最终响应更改。但是,即使我将两个响应放在队列中而其间没有其他处理(或者有一些任意延迟),客户端也永远不会收到第二个响应,最终会超时。
我想知道:
作为参考,我的守护进程设置了最基本的选项(来自第一个教程示例):
daemon = MHD_start_daemon (MHD_USE_SELECT_INTERNALLY, port, NULL,
NULL, &generate_page, NULL, MHD_OPTION_END);
如果我只是在回复中提供html文件,那么一切都会起作用。
任何建议都值得赞赏 - 即使它告诉我去哪里也是如此。
答案 0 :(得分:0)
主要问题是我试图在两次调用MHD_queue_response时重复使用相同的响应,即使由于http 102而在客户端浏览器上实际上没有显示任何内容。因此,当我试图排队实际响应时使用http 200 MHD已经删除了我试图访问的响应,这可以通过使用虚拟响应或使响应持久来解决。