2012-02-01 2 views
4

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

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 - последняя версия на момент публикации).

В соответствии с этим постом: 'Duplicate headers received from server' Error in Chrome 16 with EPPlus 2.9 он смог вывести, что это как-то связано с "," s как измеритель.

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

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

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

ответ

8

Понятно, что 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')); 

по

$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 ,

Похож на эту ошибку will be fixed в следующей версии Magento 1.7.

+0

Это, кажется, отлично работает! Благодаря! – Geoff

+0

В Magento 1.4.2.0 (и, возможно, ниже) локальное переопределение этого класса должно, вероятно, находиться в пути 'app/code/local/Mage/Controller/Varien/Action.php'. Я столкнулся с тем же вопросом, хотя необходимое изменение было в «core/Mage/Adminhtml/Controller/Action.php». Надеюсь, это поможет кому-то. – tbjers

Смежные вопросы