Установите пользовательский заголовок для ответа apache в модуле

Я создаю модуль Apache, который шифрует данные с помощью AES. Моя конечная цель - использовать другой ключ 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 этого файла.

Я почти уверен, что это можно сделать, но я действительно не знаю, где искать


person gbalduzzi    schedule 27.04.2016    source источник


Ответы (1)


После 2 дней мучений я нашел как это сделать глядя на исходный код mod_headers (иначе почти невозможно найти в документации не зная об этом)

На самом деле экземпляр request_rec *r, который Apache дает вам в обработчике, имеет очень полезное поле r->headers_out.

вы можете найти «документацию» здесь: https://ci.apache.org/projects/httpd/trunk/doxygen/structrequest__rec.html#afecc56ea8fb015aa52477dba471a6612

r->headers_out - это apr_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");
person gbalduzzi    schedule 28.04.2016