【问题标题】:How to use ap_parse_form_data and keep request body?如何使用 ap_parse_form_data 并保留请求正文?
【发布时间】:2014-08-01 01:08:29
【问题描述】:

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

有什么方法可以使用ap_parse_form_data 以保持请求正文完整吗?

【问题讨论】:

    标签: c apache apache-modules


    【解决方案1】:

    为了记录,我最终没有弄清楚如何让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,它不会处理丢弃请求正文的副作用。但它足以满足我的目的......

    【讨论】:

      猜你喜欢
      • 2019-12-16
      • 2017-02-21
      • 2011-08-15
      • 1970-01-01
      • 2021-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-23
      相关资源
      最近更新 更多