В Chrome 12.0.742.112, если я перенаправляю со следующими заголовками:
HTTP/1.1 302 Found
Location: http://0.0.0.0:3000/files/download.zip
Content-Type: text/html; charset=utf-8
Cache-Control: no-cache
X-Ua-Compatible: IE=Edge
X-Runtime: 0.157964
Content-Length: 0
Server: WEBrick/1.3.1 (Ruby/1.9.2/2011-02-18)
Date: Tue, 05 Jul 2011 18:42:25 GMT
Connection: Keep-Alive
Который, если следовать, возвращает следующий заголовок:
HTTP/1.1 200 OK
Last-Modified: Tue, 05 Jul 2011 18:18:30 GMT
Content-Type: application/zip
Content-Length: 150014
Server: WEBrick/1.3.1 (Ruby/1.9.2/2011-02-18)
Date: Tue, 05 Jul 2011 18:44:47 GMT
Connection: Keep-Alive
Chrome не будет ни перенаправлять, ни изменять предыдущую страницу, он просто выдаст следующее предупреждение в консоли:
Ресурс интерпретируется как Документ, но передается с приложением типа MIME / zip.
Процесс работает правильно в Firefox, а также отлично работает в Chrome, если я открою новую вкладку и сразу перейду к http://0.0.0.0:3000/files/download.zip
. Я делаю что-то не так, или это ошибка / изюминка Chrome?
javascript
google-chrome
Эшли Уильямс
источник
источник
Ответы:
Вы можете указать атрибут загрузки HTML5 в своем теге <a>.
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#attr-download
источник
В отправленном вами заголовке запроса
Content-Type: text/html
это означает, что вы хотите интерпретировать ответ как HTML. Теперь, даже если сервер отправляет вам файлы PDF, ваш браузер пытается понять его как HTML. Это проблема. Я ищу, чтобы узнать причину. :)источник
Content-Type: application/zip
безрезультатно, он все еще пытается обработать его как «Документ». Вероятно, также стоит отметить, что почтовый URL-адрес является динамическим в моем приложении, так что это не имеет ничего общего с кэшированием.Accept
заголовок запроса какtext/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
, возможно? Я здесь абсолютно тупой, правда!text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
есть часть, которая говорит, что Chrome принимает почти все (*/*
).Я столкнулся с этой проблемой при подаче файла PDF (MIME-тип application / pdf) и решил ее, установив заголовок Content-Disposition, например:
Надеюсь, это поможет.
источник
Я исправил это ... просто открыв новую вкладку.
Почему это не работает, я не совсем уверен, но это может иметь какое-то отношение к тому, как Chrome обрабатывает несколько загрузок на странице, возможно, он думал, что они были спамом, и просто игнорировал их.
источник
Я не мог найти нигде просто объяснение сообщения само по себе. Вот моя интерпретация.
Насколько я понимаю, Chrome ожидал некоторый материал, который он мог бы отобразить ( документ ), но он получил что-то, что не смог отобразить (или что ему было сказано не отображать).
Это вопрос как того, как документ был объявлен на уровне HTML-страницы
href
(см.download
Атрибут в сообщении Роя), так и того, как он объявлен в ответе сервера с помощью заголовков HTTP (в частностиContent-Disposition
). Это вопрос контракта , а не надежды и ожидания.Чтобы продолжить путь Эвана, я испытал это:
это просто несовместимо с:
Chrome будет плакать Ресурс интерпретируется как документ, но передается ...
На самом деле расположение вложений просто означает это: браузер не должен интерпретировать ссылку, а должен хранить ее где-то для других - скрытых - целей. Здесь выше, либо
download
отсутствует рядомhref
, либоContent-disposition
должны быть удалены из заголовков. Это зависит от того, хотим ли мы, чтобы браузер отображал документ или нет.Надеюсь это поможет.
источник
Я столкнулся с этой же проблемой сегодня в Chrome версии 30.0.1599.66 с моим приложением node.js / express.js.
Заголовки являются правильными, экспресс устанавливает их должным образом автоматически, это работает в других браузерах , как указано, помещая HTML 5 «скачать» атрибут не решает, какой сделал решительность он собирается в хромовых расширенные настройки и проверки флажок «Запрашивать место для сохранения каждый файл перед загрузкой ".
После этого не было сообщения об ошибке «Ресурс интерпретирован как документ ....», как в названии этой проблемы, поэтому кажется, что код нашего сервера правильный, это Chrome, который неправильно сообщает об этой ошибке в консоли, когда он настроен на сохранение файлы в папку автоматически.
источник
У меня была похожая проблема при выполнении загрузки файла через Javascript. Добавление атрибута загрузки не имело никакого значения, но добавление target = '_ blank' сделало - я больше не получаю консольное сообщение 'Resource интерпретируется как Document ...'.
Вот мой красиво простой код:
Я не пробовал это с прямым HTML, но ожидал, что это будет работать.
Заметьте, я обнаружил, что Firefox требует, чтобы ссылка добавлялась к документу, тогда как Chrome будет работать без него.
источник
Я столкнулся с этим, когда я назначил src = "image_url" в iframe. Кажется, что iframe интерпретирует это как документ, но это не так. Вот почему отображается предупреждение.
источник
var photoData = new FormData();
и затем установил свойствоcontentType: false
в своем запросе ajax. Почтовый запрос будет:Content-Disposition: form-data;
И контент-типContent-Type: text/html
Я решил проблему по
adding target="_blank"
ссылке. При этом chrome открывает новую вкладку и загружает PDF без предупреждения даже в адаптивном режиме.источник
window.open(href, '_blank');
и новая вкладка автоматически закрывается после загрузки.У меня была эта проблема в проекте веб-сайта ASP. Добавление заголовка «Content-Length» снова привело к загрузке в Chrome.
источник
Эта проблема вновь появилась в версии Chrome 61. Но, похоже, это исправлено в Chrome 62.
У меня есть RewriteRule, как показано ниже
В Chrome 61 PDF не открывался, в консоли показывалось сообщение
Мы попытались добавить mime-тип в правило перезаписи, как показано ниже, но это не помогло.
Я обновил свой Chrome до последней версии 62, и он снова начал показывать PDF. Но сообщение все еще там в консоли.
Со всеми другими браузерами все было нормально.
источник
Просто наткнулся на это, и никакая другая информация, которую я смог найти, не помогла: это была глупая ошибка: я отправлял вывод в браузер перед началом загрузки файла. Удивительно, но я не нашел полезных ошибок (например, «заголовки уже отправлены» и т. Д.). Надеюсь, это спасет кого-то еще от горя!
источник
В моем случае имя файла было слишком длинным и получило ту же ошибку. После сокращения ниже 200 символов работал нормально. (предел может быть 250?)
источник
Я получил эту ошибку, потому что я обслуживал из моей файловой системы. Как только я начал с http-сервера, Chrome мог понять это.
источник
У меня возникла та же проблема с менеджером загрузок, который я создал. Проблема в том, что имя файла было слишком длинным, а расширение обрезано.
Пример: Имя файла: Организационные протоколы и другие важные вещи.pd
Решение: Увеличено поле базы данных MySQL до 255 для хранения имени файла и выполнена проверка длины перед сохранением большого двоичного объекта. Если длина> 255, обрежьте его до 250 и добавьте расширение файла.
источник
Попробуйте приведенный ниже код, и я надеюсь, что это сработает для вас.
источник
Я столкнулся с этим сегодня, и моя проблема была в том, что мой
Content-Disposition
тег был неправильно установлен. Похоже, что для обоихpdf
&application/x-zip-compressed
, вы должны установить егоinline
вместоattachment
.Таким образом, чтобы установить заголовок, код Java должен выглядеть следующим образом:
источник