我正在为apache开发一个模块,它在将请求传递给后端之前执行一些身份验证。有些此身份验证有时需要解析表单数据。问题是ap_parse_form_data
似乎耗尽了请求主体,所以当它通过我的模块并进入ProxyPass
指令并将其汇集到后端时,请求正在消失,并且后端认为没有提供表格数据。
有没有办法以这样的方式使用ap_parse_form_data
以保持请求正文完好无损?
答案 0 :(得分:0)
为了记录,我最终没有弄清楚如何让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
,它就不会处理丢弃请求正文副作用。但它足以满足我的目的......