Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

C сервера получены одинаковые заголовки


evzh

Recommended Posts

Привет всем!

У меня возникла следующая проблема магазин kuznica1.ru, сделан на ocStore 0.2.2, для продажи курсовых, клиент заходит на сайт, регистрируется, покупает работу, потом заходит в личный кабинет и скачивает купленные работы. Оплата киви, робокасса и вебмани.

Последнее время некоторые клиенты стали жаловаться, что после оплаты при попытке скачать файлы выходит сообщение с сервера получены одинаковые заголовки, причем это происходит не зависимо от варианта оплаты.

Кто нибудь сталкивался с этой проблемой?

Заранее огромное спасибо

Надіслати
Поділитися на інших сайтах


Что-то непонятное. Скриншот сообщения сделать можете?

Проверил такая проблема только в браузере Google Chrome.

Изображение

Купленный файл не скачивается, выходит такое сообщение. Однако количество скачиваний становится на одно меньше.

В других браузерах можно скачать как обычно.

Надіслати
Поділитися на інших сайтах


Ищите в исходниках, где у вас добавляется лишний HTTP-заголовок Content-Disposition:

Один находится в файле catalog/controller/account/download.php, а второй наверное какой-то из модулей добавляет (или ещё что-то).

Надіслати
Поділитися на інших сайтах


Ищите в исходниках, где у вас добавляется лишний HTTP-заголовок Content-Disposition:

Один находится в файле catalog/controller/account/download.php, а второй наверное какой-то из модулей добавляет (или ещё что-то).

Единственное место, где встречается заголовок Content-Disposition: в файле catalog/controller/account/download.php

Просмотрел все модули, искал по всем файлам упоминания такого заголовка не нашел.

Вот кусок кода, где упоминается Content-Disposition

if (!headers_sent()) {

if (file_exists($file)) {

header('Pragma: public');

header('Expires: 0');

header('Content-Description: File Transfer');

header('Content-Type: ' . $mime);

header('Content-Transfer-Encoding: ' . $encoding);

header('Content-Disposition: attachment; filename=' . ($mask ? $mask : basename($file)));

header('Content-Length: ' . filesize($file));

На форуме Google Chrome есть обсуждение этой проблемы

https://groups.google.com/a/googleproductforums.com/forum/?fromgroups#!topic/chrome-ru/Yy4kKbFh5do

Проблема на стороне сервера

Хром стал более жестко подходить к стандартам скачиваемых документов, если они генерируются "на лету"

У себя на сервере при генерации WORD документа была маааленькая неточность в отправляемом заголовке

Стояла запятая вместо точки с запятой:

header('Content-Disposition: inline; filename=template.rtf');

Остальные браузеры да и ранний Хром, замечательно это "хавали" а теперь ФАТАЛЬНАЯ ОШИБКА

Надіслати
Поділитися на інших сайтах


Попробуйте закомментировать ту строку, которую вы нашли в файле catalog/controller/account/download.php и посмотреть что будет.

Если не поможет, то надо проснифить общение между сервером и браузером, чтобы увидеть что там происходит на самом деле.

ЗЫ: ещё можно попробовать заменить эту строку на такую:

header('Content-Disposition: attachment; filename="' . ($mask ? $mask : basename($file)) . '"');
  • +1 1
Надіслати
Поділитися на інших сайтах


Если закомментировать, то скачивается файл index.php

Логично предположить, что Content-Disposition: упоминается только в download.php

А вот замена строки помогла.

Большое спасибо за помощь.

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.