Почему после деплоя файл по ссылке стал открываться в браузере вместо скачивания?
Которые после деплоя на сервер становятся соответственно:
- https://bearings-info.herokuapp.com/file/dictionary_ru/download
- https://bearings-info.herokuapp.com/file/comments/download
- https://bearings-info.herokuapp.com/file/info_categoкies/download
На локалхосте все ссылки работают как требуется — файл скачивается.
В задеплоеном проекте — то же самое. За исключением 1 ссылки:
По ней после деплоя файл почему-то стал открываеться в браузере.
Почему на локалхосте скачивает, а на сервере открывает? Почему другие ссылки не ведут себя аналогичным образом? В чем разница?
Проект:
- localhost (все Ок — скачивается): Vue.js (фронт) + Spring Boot (бэк) + Nginx (обратный прокси)
- деплой (открывается вместо скачивания): фронт на GH Pages, бэк на Heroku, Nginx не используется
Код:
getDictionaryDownloadUrl() < let lang = this.$route.params.lang; return this.basicUrl + "/file/" + "dictionary" + "_" + lang + "/download"; >, getDownloadUrl(fileName) < return this.basicUrl + "/file/" + fileName + "/download"; >
Можно посмотреть «вживую»:
old-vehicles.com/#/menu/ru -> «Скачать словарь»
И обнаружил еще одну особенность поведения: попробуйте переключить язык на польский и повторить «Download dictionary». Обратите внимание, что в этом случае словарь скачается.
Единственная разница межу всеми этими кейсами,которая мне приходит в голову, это то, что в файле dictionary_ru присутствует кириллица.
Почему файл открывается в браузере как текст, а не скачивается?
Пишу тут одну фигню, необходимо из этой фигни выгружать не фиговые такие отчеты в *.xlsx. Сгенерировал файлик, передал JS’у на него ссылку, пишу:
window.location.href = result['url'];
Т.е. пытаюсь «скачать» его. А он открывается тупо как текст. Я думал проблема в content-type’e, добавил следующее:
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
Все равно как текст открывается.
П.С. Я знаю, что без JS’а с ajax’ом все сделать проще, но необходимо передавать кучу информации, по этому, приходится юзать JS.
Перемещено true_admin из development
Deleted
30.09.15 14:02:27 MSK

гуглить за тебя папа карло будет?
reprimand ★★★★★
( 30.09.15 14:23:45 MSK )
Ответ на: комментарий от reprimand 30.09.15 14:23:45 MSK
Добавил вот это: Content-Disposition: attachment; filename=«fname.ext»
Deleted
( 30.09.15 14:33:14 MSK )
Ответ на: комментарий от Deleted 30.09.15 14:33:14 MSK

посмотри что за хедеры отправляет сервер, делов-то
Не девелопер что-ли?)
reprimand ★★★★★
( 30.09.15 14:36:32 MSK )
Ответ на: комментарий от reprimand 30.09.15 14:36:32 MSK

$ nc hostname 80 GET /addr
reprimand ★★★★★
( 30.09.15 14:38:15 MSK )
Ответ на: комментарий от reprimand 30.09.15 14:36:32 MSK
посмотри что за хедеры отправляет сервер, делов-то
Странно, там нет ни одного моего параметра, как будто я их и не указывал вовсе.
Да какой из меня девелопер. Стажер-юниор максимум.
Deleted
( 30.09.15 14:40:42 MSK )
Ответ на: комментарий от reprimand 30.09.15 14:36:32 MSK
Вообще нет, один параметр есть, а «Content-Disposition: attachment;» — нет. Ни фига не пойму:
POST /saveToExcelTabelByCategorie.xlsx HTTP/1.1 Host: tabgraf Accept: application/json, text/javascript, */*; q=0.01 Accept-Encoding: gzip, deflate Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4 Content-Type: application/x-www-form-urlencoded; charset=UTF-8 Cookie: PHPSESSID=vi082ee84f8hpfccmasr4768j2 Origin: http://tabgraf Referer: http://tabgraf/ User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36 X-DevTools-Emulate-Network-Conditions-Client-Id: 32D3F12F-A4AB-4EF5-9810-FFDE5BC2B29E X-Requested-With: XMLHttpRequest HTTP/1.1 200 OK Accept-Ranges: bytes Content-Length: 10100 Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,text/html; charset=utf-8 Date: Wed, 30 Sep 2015 10:47:21 GMT ETag: W/"c48a29626dfbd01:0" Last-Modified: Wed, 30 Sep 2015 10:47:21 GMT Server: Microsoft-IIS/7.5 X-Powered-By: ASP.NET
Меня пугает вот это: «Accept: application/json, text/javascript, */*; q=0.01»
Deleted
( 30.09.15 14:46:19 MSK )
Последнее исправление: Bizun 30.09.15 14:46:55 MSK (всего исправлений: 1)
Ответ на: комментарий от Deleted 30.09.15 14:46:19 MSK

Меня пугает вот это: «Accept: application/json, text/javascript, */*; q=0.01»
А Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,text/html не пугает? А POST и X-Requested-With: XMLHttpRequest, когда ты делаешь просто
goingUp ★★★★★
( 30.09.15 15:04:49 MSK )
Последнее исправление: goingUp 30.09.15 15:11:08 MSK (всего исправлений: 1)
Отключаем открытие PDF файлов внутри браузера

Большинство современных браузеров имеют встроенный просмотрщик PDF файлов, с помощью которого они позволяют просматривать любой PDF файл, который вы открываете на веб-странице, или скачиваете с какого-нибудь веб-сайта. Если такое поведение браузера вас не устраивает, и вы хотите открывать PDF файлы с помощью другой программы на компьютере, то для этого нужно будет выполнить не сложную настройку браузера по инструкциям ниже.
Google Chrome
- Открываем меню браузера, и выбираем пункт «Настройки«.

- Открываем раздел настроек «Конфиденциальность и безопасность«.

- Открываем раздел «Настройки сайтов«.

- Находим пункт «PDF файлы«. Если он отсутствует — нажимаем на надпись «Дополнительные настройки контента«, чтобы увидеть полный список, в котором должен быть необходимый нам пункт настроек.

- В открывшихся настройках PDF-файлов, выбираем параметр «Скачивать PDF-файлы«.

Microsoft Edge
- Открываем меню браузера, и там выбираем пункт «Настройки«.

- В левом боковом меню быстрых переходов, выбираем пункт «Файлы cookie и разрешения сайтов«.

- В списке разрешений следует найти пункт «PDF-документы«, и открыть его.

- Включаем опцию «Всегда скачивать файлы PDF«.

Mozilla Firefox
- Открываем меню браузера, и выбираем пункт «Настройки«.

- Прокручиваем содержимое окна настроек, до тех пор, пока не будет найдена секция «Файлы и приложения«. Там же будет находится раздел «Приложения«, где в списке следует найти «Формат переносимых документов (PDF)«.
- В соседней колонке «Действие«, нужно открыть выпадающее меню и выбрать «Использовать приложение Windows. «.

Яндекс Браузер
- Открываем настройки браузера, вызвав главное меню, и выбрав в нем пункт «Настройки«.

- В левой панели быстрого перехода выбираем «Инструменты«.

- Здесь следует найти раздел «Просмотр файлов«, и в нем отключить опцию «Открывать в браузере PDF-файлы«.

Была ли эта статья Вам полезна?
Что в статье не так? Пожалуйста, помогите нам её улучшить!
.EXE файлы открываются в браузере
Не могу открыть exe файл. Он по умолчанию открывается в браузере. Как мне это исправить?
Голосование за лучший ответ
Подобная проблема была, я просто скачанные файлы добавлял в архив, они как-то запускались.
нарушена ассоциация файлов exe.
Восстановление ассоциации файлов в Windows 7 и 8 http://remontka.pro/fix-file-associations-windows/
правой кнопкой открыть с помощью
В большинстве случаев проблема бывает вызывана сбоем в ассоциациях файлов Windows.
Чтобы решить проблему, необходимо внести изменения в системный реестр Windows.
Для этого необходимо загрузить и запустить на выполнение два файла реестра:
восстановление ассоциаций ярлыков
pcbee.ru/files/Default_LNK.zip
восстановление ассоциаций исполняемых файлов (файлов .exe)
pcbee.ru/files/Default_EXE.zip
Похожие вопросы