1

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

有什么方法可以ap_parse_form_data使请求主体保持完整吗?

4

1 回答 1

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这并不理想,因为如果在实际上不包含表单数据的请求主体上调用,它不会处理丢弃请求主体的副作用。但它足以满足我的目的......

于 2014-08-04T16:37:02.630 回答