独立的网络服务器来服务 HTTP GET 请求

问题描述 投票:0回答:1

我正在开发一个基于使用gsoap v2.8的网络服务器(FCGI)。 该网络服务器应响应传入的 HTTP GET 请求,但它不起作用。

我知道 gsoap 提供了 HTTP 回调来实现这一点,在我的例子中,我使用soap->fget 回调。 我浏览了 gsoap 文档,并且遵循相同的做法。

main function fget code

我知道每当有传入的 HTTP GET 请求时,soap_serve(由 gsoap 生成)函数将调用 fget 回调函数,但我看到我的函数 http_get 没有被命中,soap_serve 返回 -1 并显示错误消息“Response-Header” : HTTP/1.1 500 内部服务器错误 服务器:“

我不确定是否需要在我的代码中更正/添加任何内容来处理我的网络服务器的 HTTP GET 请求。

任何快速回复都会对我很有帮助。 预先感谢您。

soap fastcgi http-get gsoap
1个回答
0
投票

使用 FCGI 或 CGI 时不会调用

fget()
回调,因为 HTTP 标头已从入站消息中剥离。因此,
soap_serve()
默认假设这是一个 POST 请求。要响应 GET 请求,请勿立即调用
soap_serve()
。检查环境变量
REQUEST_METHOD
是否为
GET
,然后产生相应的输出。检查环境变量
PATH_INFO
PATH_TRANSLATED 
QUERY_STRING
是否与您的服务应响应的 URL 匹配。切勿返回服务器上由
PATH_INFO
QUERY_STRING
标识的文件,这是存在安全风险的。仅返回应公开可见的文件或输出。

© www.soinside.com 2019 - 2024. All rights reserved.