#internet-explorer #pdf #amazon-s3 #knox-amazon-s3-client
#internet-explorer #PDF #amazon-s3 #knox-amazon-s3-client
Вопрос:
Я загрузил PDF-файл в s3 и использую подписанный URL. передаю amazonHeaders для размещения содержимого (я возвращаю заголовок ответа для размещения содержимого). Для этого я вставил исправление в client.js в KNOX
var signature = auth.signQuery({
amazonHeaders: options amp;amp; options.headers,
secret: this.secret,
date: epoch,
resource: resource,
verb: (options amp;amp; options.verb) || 'GET',
contentType: options amp;amp; options.contentType,
token: this.token,
});
и передача параметров.заголовки
headers = "response-content-disposition:attachment; filename=#{file._id}"
Но я не могу открыть это в IE, я могу открыть это в Chrome.
Я не знаю, действительно ли мне нужен заголовок content-disposition вообще. потому что, когда я пытаюсь это сделать с локального хоста / expess nodejs server.it отправьте тот же ответ. И он автоматически открывается в IE.
это ответ от Amazon / S3
Комментарии:
1. Проблема только с PDF. Я попытался загрузить PNG, он работает нормально..
2. Что вы имеете в виду, вы «не можете открыть это в IE?» Что происходит при попытке? Ничего? Ошибка? Окно браузера полно шума?
3. никаких ошибок. просто .. серое окно..
4. какую версию Windows и IE вы используете? Какая у вас программа для чтения PDF (и ее версия)?
5. вы пытаетесь встроить PDF-файл в iframe или тег object?
Ответ №1:
Заголовки ответов на вашем скриншоте не отображают заголовок Content-Disposition, поэтому эта часть не работает, но я не знаю, является ли это вашей проблемой с IE.
Если вы хотите иметь Content-Disposition: attachment
Вам не нужно изменять knox (больше), чтобы добавить пользовательские заголовки ответов. Вы можете сделать:
var headers = { 'response-content-disposition': 'attachment;filename=test.pdf'};
var expires = new Date(); expires.setYear(2020);
var url = client.signedUrl('/test.pdf', expires, { qs: headers });
Это дало мне URL, подобный https://mikie-knox-test.s3-eu-west-1.amazonaws.com/test.pdf?Expires=1594497470amp;AWSAccessKeyId=AKIAIW2ON37WUIIUJ2NAamp;Signature=fUQyOmYuPM2dEMPTY/RkssK0oxw=amp;response-content-disposition=attachment;filename=test.pdf .
(Я не думаю, что вы хотите, #{file._id}
чтобы в вашем коде это выглядело как ошибка копирования-вставки из источника ruby).