Magento - повторяющиеся заголовки, полученные с сервера

Проблема в том, что иногда я получаю эту ошибку в Google Chrome, когда фильтрую экспорт заказа:

Duplicate headers received from server
The response from the server contained duplicate headers. This problem is generally the result of a misconfigured website or proxy. Only the website or proxy administrator can fix this issue.
Error 349 (net::ERR_RESPONSE_HEADERS_MULTIPLE_CONTENT_DISPOSITION): Multiple Content-Disposition headers received. This is disallowed to protect against HTTP response splitting attacks.

Я говорю об экране Sales > Orders.

Скажем, я фильтрую его по номеру заказа, так что я хочу экспортировать только 1 фактический заказ в файл .csv.

В FF, IE и т. д. это работает. И в большинстве случаев он также работает в Chrome (16 — последняя версия на момент публикации).

Согласно этому сообщению: ' Повторяющиеся заголовки, полученные от сервера. Ошибка в Chrome 16 с EPPlus 2.9 он смог сделать вывод, что это как-то связано с "," в качестве разделителя.

Я попытался перейти к lib/Varien/File/Csv.php и изменить разделитель на ";" но это, похоже, не сработало...

У кого-нибудь есть предложения?

Примечание. Существуют некоторые исправления для самого Chrome (я думаю), но я хочу исправить это через Magento, если это возможно.


person Geoff    schedule 01.02.2012    source источник


Ответы (1)


Кажется, в этом случае magento неправильно отправлял заголовки.

Это не ошибка «запятая в имени файла», но похоже, что Magento дважды отправляет один и тот же заголовок.

Вы можете решить эту проблему, изменив 3 строки в app/code/core/Mage/Core/Controller/Varien/Action.php. Посмотрите на метод _prepareDownloadResponse и измените следующее:

$this->getResponse()
->setHttpResponseCode(200)
->setHeader('Pragma', 'public', true)
->setHeader('Cache-Control', 'must-revalidate, post-check=0, pre-check=0', true)
->setHeader('Content-type', $contentType, true)
->setHeader('Content-Length', is_null($contentLength) ? strlen($content) : $contentLength)
->setHeader('Content-Disposition', 'attachment; filename="'.$fileName.'"')
->setHeader('Last-Modified', date('r'));

by

$this->getResponse()
->setHttpResponseCode(200)
->setHeader('Pragma', 'public', true)
->setHeader('Cache-Control', 'must-revalidate, post-check=0, pre-check=0', true)
->setHeader('Content-type', $contentType, true)
->setHeader('Content-Length', is_null($contentLength) ? strlen($content) : $contentLength, true)
->setHeader('Content-Disposition', 'attachment; filename="'.$fileName.'"', true)
->setHeader('Last-Modified', date('r'), true);

Лучше всего не применять это изменение к базовым классам, а создать копию этого класса и разместить ее здесь: /app/code/local/Mage/core/Controller/Varien/Action.php.

Похоже на эту ошибку будет исправлено в следующем выпуске Magento 1.7.

person GiDo    schedule 07.03.2012
comment
В Magento 1.4.2.0 (и, возможно, ниже) локальное переопределение этого класса, вероятно, должно быть в пути app/code/local/Mage/Controller/Varien/Action.php. Я столкнулся с той же проблемой, хотя необходимые изменения были в core/Mage/Adminhtml/Controller/Action.php. Надеюсь, это поможет кому-то. - person tbjers; 04.11.2012