Не могу установить Content-Disposition на ответ функции Firebase - PullRequest
0 голосов
/ 22 октября 2019

У меня есть функция, которая отправляет файл .xlsx следующим образом:

res.writeHead(200, {
    "Content-Disposition": "attachment;filename=" + file.metadata.metadata.displayName,
    'Content-Type': 'vnd.openxmlformats-officedocument.spreadsheetml.sheet',
    'Content-Length': buffer.length,
    'Access-Control-Expose-Headers': 'Content-Disposition'
});
res.end(buffer);

Однако заголовок Content-Disposition, похоже, не работает. Если я проверю вкладку сети Chrome DevTools и увижу детали запроса, заголовка Content-Disposition нет (хотя Access-Control-Expose-Headers присутствует).

Это ограничение функций Firebase? Или я что-то не так делаю?

Кроме того, это работает, если я размещаю функции локально (используя firebase serve --only functions).

Спасибо!

1 Ответ

0 голосов
/ 23 октября 2019

Я понял это. Кажется, что Content-Disposition не может содержать специальные символы в соответствии с RFC 2183 Раздел 2.3

Текущая грамматика [RFC 2045] ограничивает значения параметров (и, следовательно, имена файлов Content-Disposition) для США-ASCII.

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

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