Начиная с Apache 2.4.23 (насколько я знаю, последний выпуск на сегодняшний день), вы не сможете обойти эту проблему, отправив ответ 304 «Not Modified», потому что, действительно, , Apache явно удаляет все заголовки без белого списка:
http://svn.apache.org/viewvc/httpd/httpd/tags/2.4.23/modules/http/http_filters.c?view=markup#l1331
Итак, нравится нам это или нет (потому что я нахожусь в том же положении, когда Apache удаляет мои заголовки CORS из ответа, когда я отправляю 304), похоже, что Apache следует рекомендации RFC, и это действительно, рассматривая все, что выходит за пределы этого списка, как заголовки сущностей.
Одним из решений является исправление исходного кода Apache, чтобы расширить этот список и перейти к развертыванию собственного пакета на своих серверах, но это определенно не без длинного списка собственных последствий. С другой стороны, я слышал, что nginx не страдает от этой проблемы.
Содержимое, которое я доставляю, будет потребляться, среди прочего, средами выполнения WebGL в стандартных браузерах, поэтому, если они будут жаловаться на отсутствие CORS в моих 304 ответах, мне придется все перевести на 200 ОК. и отказаться от экономии полосы пропускания.