Правильные заголовки, но Chrome говорит: "Ресурс интерпретируется как документ"

Я прочитал много вопросов, как этот, но я действительно не могу понять это...

Я использую архиватор и выражаю модули Node.js. Я хочу просто отправить почтовый файл клиенту. Мой код выглядит примерно так:

res.set("Content-Type", "application/zip");
archive = archiver("zip", {store: true});
archive.pipe(res);

По запросу файл zip передается корректно, но Chrome жалуется:

Ресурс интерпретируется как Документ, но передается с приложением MIME-типа /zip

Если я сделаю что-то глупое, например, установив тип содержимого text/json, Я получил:

Ресурс интерпретируется как Документ, но передается с текстом MIME типа /json

Поэтому, очевидно, то, что я устанавливаю в Node.js, выполняет свою работу, и проблема заключается в другом. В нем говорится, что ресурс был перенесен с помощью MIME-типа applicationatioin /zip, но интерпретирован как Document.

Как сделать так, чтобы он не интерпретировался как Документ?


Также я попробовал эти способы установки типа контента:

res.type("application/zip");
res.contentType("application/zip");

Но я получил тот же результат.

Mozilla, с другой стороны, ни на что не жалуется. В некоторых ответах на подобные вопросы сказано, что это предупреждение можно игнорировать. Должен ли я игнорировать это тоже? Может ли быть проблема в том, что архив передается напрямую к объекту ответа? Хотя (повторюсь) почтовый индекс успешно отправлен.

Редактировать:

настройка Content-Disposition тоже не работает:

res.set({
    "Content-Type": "application/zip",
    "Content-Disposition": "attachment; filename='images.zip'"
});

Я также использую <iframe> чтобы инициировать запрос:

document.getElementById("iframe-downloader").src = requestUrl;

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

Редактировать:

Изменение настроек Chrome, как указано в этом ответе, также не работает.

Редактировать:

Этот ответ говорит, что это из-за <iframe>, Если я сделаю запрос через простой <form> с action="/archive", это все еще не работает.

1 ответ

Я думаю, это означает, что Chrome пытается отобразить файл как веб-страницу, а это не то, что вы хотели.

Добавьте заголовок: Content-Disposition: attachment; filename="filename.ext"

У меня та же проблема; У меня был почтовый запрос на основе формул, в результате которого был создан файл. Именно это предупреждение вызвало наличие MIME Type и Content-Disposition. Я где-то читал, что новые файлы надо открывать в новой вкладке, и предупреждение пропало. (Но также может быть потому, что новая страница открывалась и закрывалась в мгновение ока... поэтому я не мог проверить, появилось ли там это предупреждение)

Best, Янв

Другие вопросы по тегам