如何使用ap_parse_form_data并保持请求体?

时间:2014-08-01 01:08:29

标签: c apache apache-modules

我正在为apache开发一个模块,它在将请求传递给后端之前执行一些身份验证。有些此身份验证有时需要解析表单数据。问题是ap_parse_form_data似乎耗尽了请求主体,所以当它通过我的模块并进入ProxyPass指令并将其汇集到后端时,请求正在消失,并且后端认为没有提供表格数据。

有没有办法以这样的方式使用ap_parse_form_data以保持请求正文完好无损?

1 个答案:

答案 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,它就不会处理丢弃请求正文副作用。但它足以满足我的目的......