У меня есть REST API, который возвращает 304 Not Modified
код состояния для некоторого запроса (с заголовком If-Modified-Since). Проблема в том, что программное обеспечение apache2 удаляет любой заголовок CORS перед отправкой ответа в браузер.
Это происходит только тогда, когда код состояния 304
. Любая другая конечная точка отлично работает с CORS. Все предполетные запросы тоже отлично работают.
Я читал в Интернете, что Apache делает это для соответствия некоторым спецификациям, но я не могу поверить, что CORS с 304 не должен работать в спецификациях.
Есть ли способ добиться этого с помощью apache?
Обновить:
Мой javascript
var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://api.domain.com/api/endpoint?token='+localStorage.getItem('token'));
xhr.setRequestHeader("If-Modified-Since", "Mon, 11 Jan 2016 15:46:54 GMT");
xhr.send(null);
Я получаю сообщение об ошибке:
На запрошенном ресурсе отсутствует заголовок Access-Control-Allow-Origin. Происхождение 'http://xxx.domain.com'поэтому не разрешен доступ.
304 не нужно включать заголовки CORS. Браузеры должны видеть 304 и использовать кеш.
https://bz.apache.org/bugzilla/show_bug.cgi?id=51223#c1
CORS не требует этих заголовков на 304, и действительно, браузеры работают без них. Это связано с тем, что многие 304 сгенерированы из промежуточных кешей, которые нельзя обновить, чтобы узнать о CORS.