将自定义标头设置为模块内的apache响应

时间:2016-04-27 14:23:59

标签: apache apache-modules

我正在创建一个使用AES加密数据的apache模块。 我的最终目标是为每个请求使用不同的AES密钥,生成一个16字节的新密钥,用于AES加密文件并将密钥(使用RSA加密)作为自定义标头发送

问题是我无法找到任何以编程方式设置自定义标头的文档。

我期待ap_set_handler("HeaderName","content")

之类的东西

我只找到使用这样一个函数的文件: http://opensource.apple.com/source/apache/apache-643/apache/src/modules/proxy/proxy_ftp.c

问题是,在我的源代码中包含它会给我一个implicit declaration of function 'ap_set_header'错误,即使我包含该文件的相同.h文件。

我很确定可以做到,但我真的不知道在哪里搜索

1 个答案:

答案 0 :(得分:2)

经过2天的努力,我发现如何查看mod_headers的源代码(否则几乎不可能在文档中找到而不知道它)

实际上,Apache在处理程序中为您提供的request_rec *r实例具有非常有用的r->headers_out字段。

你可以找到'文档'在这里:https://ci.apache.org/projects/httpd/trunk/doxygen/structrequest__rec.html#afecc56ea8fb015aa52477dba471a6612

r->headers_outapr_table_t,因此您可以使用适当的函数对其进行修改:

/* Add header at the end of table */
ap_table_mergen(r->headers_out, "NameField", "value");
/* Overwrite value of "NameField" header or add it (if not existing) */
ap_table_setn(r->headers_out, "NameField", "value");
/* Unset header */
ap_table_unset(r->headers_out, "NameField");