Я экспериментирую с веб-расширениями и пытаюсь изменить заголовки ответов, чтобы сделать результаты XMLHttpRequest () доступными для загрузки, установив Content-Disposition в качестве вложения.
Сейчас я просто пытаюсь заменить полученные заголовки ответа тремя наиболее простыми для начала загрузки, как описано в этом MDN Web Doc . И я думаю, что код соответствует этому очень короткому примеру , предоставленному в веб-документе webRequest, который изменяет заголовок запроса.
У меня есть разрешения webRequest и webRequestBLocking и разрешение хоста для all_urls в файле manifest.json.
После завершения этого кода, когда я записываю заголовки ответа, полученные запросом GET, он остается неизменным. Я уверен, что этот код выполняется, потому что я отправляю сообщения обратно в скрипт содержимого изнутри на каждом этапе; и событие onHeadersReceived завершается до события onreadystatechange запроса GET.
Существует множество вопросов о том, что измененные заголовки не могут быть просмотрены в инструментах разработки, но я пишу то, что получено запросом GET. Этот вопрос гласит, что onHeadersReceived использует заголовки прокси, и вы не можете их реально изменить, и сделать это в onResponseStarted; но это тоже не сработало.
Я хочу, чтобы заголовок ответа инициировал окно «Сохранить как» для загрузки данных, возвращенных из ответа GET, на клиентский диск.
Я, должно быть, упускаю что-то очень простое. Что я делаю не так или не делаю? Спасибо.
browser.webRequest.onHeadersReceived.addListener(
listener,
{ urls : ["<all_urls>"] },
["blocking", "responseHeaders"]
);
function listener( details) {
details.responseHeaders = [ { 'Content-Type' : 'text/html; charset=utf-8' }, { 'Content-Disposition' : 'attachment; filename="fileName.html"' }, { 'Content-Length' : '22' } ];
return { responseHeaders : details.responseHeaders };
}