2016-04-27 89 views
0

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

问题是我可以找不到任何文档以编程方式设置自定义标题。

我期待像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

挣扎后,我发现如何做到这一点,在看mod_headers中的源代码(否则它几乎是2天在不知道的情况下不可能在文档中找到它)

实际上,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");