我正在为 apache 开发一个模块,该模块在将请求传递到后端之前执行一些身份验证。有时,某些身份验证需要解析表单数据。问题是这ap_parse_form_data
似乎耗尽了请求正文,因此当它通过我的模块并到达将ProxyPass
其汇集到后端的指令时,请求正文消失了,后端认为没有提供表单数据。
有什么方法可以ap_parse_form_data
使请求主体保持完整吗?
我正在为 apache 开发一个模块,该模块在将请求传递到后端之前执行一些身份验证。有时,某些身份验证需要解析表单数据。问题是这ap_parse_form_data
似乎耗尽了请求正文,因此当它通过我的模块并到达将ProxyPass
其汇集到后端的指令时,请求正文消失了,后端认为没有提供表单数据。
有什么方法可以ap_parse_form_data
使请求主体保持完整吗?
作为记录,我最终没有弄清楚如何ap_parse_form_data
不丢弃请求正文。我可以通过手动添加请求正文来达到相同的效果,如下所示:
apr_bucket_brigade *new_brigade = apr_brigade_create(req->pool, req->connection->bucket_alloc);
apr_bucket *bucket = apr_bucket_transient_create(reencoded_form_data,
strlen(reencoded_form_data), req->connection->bucket_alloc);
APR_BRIGADE_INSERT_TAIL(new_brigade, bucket);
req->kept_body = new_brigade;
ap_parse_form_data
这并不理想,因为如果在实际上不包含表单数据的请求主体上调用,它不会处理丢弃请求主体的副作用。但它足以满足我的目的......