Возможно ли использовать JavaScript для динамического изменения заголовков HTTP, полученных при загрузке изображения из внешнего источника? Я пытаюсь контролировать кеширование изображения (Expires
, Max-Age
и т. Д.) На стороне клиента, так как у меня нет доступа к серверу.Изменение HTTP-заголовков на стороне клиента с помощью JavaScript
ответ
Я не думаю, что Javascript действительно может это сделать: изображения запрашиваются браузером, и это зависит от него, чтобы определить заголовки HTTP-заголовков.
Один из способов использования некоторых пользовательских заголовков был бы с каким-то Ajax-запросом, не проходящим никаким <img>
тегом; но вы должны знать, что делать с возвращенными данными ... Не думайте, что это поможет.
Если вы хотите, чтобы ваши изображения будут храниться в кэше в браузере, то сервер должен послать правильные заголовки в ответах (как Etag и/или Expires - см mod_expires, для Apache, например)
Если вы хотите абсолютно уверен, что браузер загрузит новое изображение и не будет использовать версию, содержащуюся в кеше, вы должны использовать другой URL-адрес каждый раз.
Это часто делается с использованием метки времени в качестве параметра URL-адреса; например example.com/image.jpg?123456789 (123456789, являющийся более или менее текущей меткой времени - очевидно, меньше, чем больше, но вы получаете идею: каждую секунду браузер увидит, что URL-адрес изменился)
EDIT после редактирования вопроса:
заголовок Expires
генерируется сервером, и один из заголовков, которые приходят в ответ (это не заголовок клиент посылает в запросе; см List of HTTP headers).
Таким образом, вы Absolutly не имеют никакого контроля над ним со стороны клиента: это сервер, который должен быть настроен, чтобы сделать работу, здесь ...
Если вы хотите больше ответов: что вы пытаясь сделать именно? Зачем ?
хотят установить максимальный срок действия для изображения/флэш-выборки из внешнего источника для клиента с использованием технологии клиента, а не сервера (tomcat, apache), через ajax – cometta
Кэширующие директивы находятся на сервере. Вы не можете манипулировать ими на стороне клиента.
Возможно, это вариант для установки прокси-сервера, например. если вы нацелены на сотрудников компании?
Как говорили другие, нет, возможно, не манипулировать заголовками http и кэшированием директив с сервера в клиентском коде.
Что можно
Что у вас есть возможность сделать это убедиться, что вы получите новый файл. Это можно сделать, добавив уникальную строку в URL-адрес запроса в качестве параметра строки запроса.
например. если вы хотите, чтобы убедиться, что вы получили новый файл каждый час
<script type="text/javascript">
var d = new Date();
url += ("?" +d.getYear() + "_" + d.getDay() + "_" + d.getHours());
</script>
Что это делает добавить значение, содержащее год, день и час к URL-адресу, так что это будет уникальным для каждого часа, следовательно, обеспечить новый файл. (Не испытано!)
Очевидно, что это можно сделать гораздо более общим и точным образом настроенным, но, надеюсь, вы получите эту идею.
Что невозможно
То, что вы не можете сделать, это убедиться, что вы не получить новую версию с сервера.
другое примечание: если вы вообще не хотите кэшировать, вы можете использовать 'd. getTime(); 'для метки времени, которая добавит число, например' 1249547501178' – Kobi
- 1. Изменение выбранной вкладки Vaadin на стороне клиента
- 2. Проверка на стороне клиента Javascript
- 3. изменение группы проверки кнопки с javascript на стороне клиента
- 4. Запрос на стороне клиента на стороне клиента
- 5. Тестирование Javascript на стороне клиента
- 6. Javascript-уязвимость на стороне клиента
- 7. Javascript на стороне клиента ORM
- 8. Изменение имени клиента на стороне сервера.
- 9. Получение на стороне сервера javascript на стороне клиента
- 10. Кэширование на стороне клиента (с JavaScript)
- 11. Rikulo на стороне клиента на стороне клиента
- 12. отладка на стороне клиента на стороне клиента
- 13. Изменение значения DropDownList на стороне клиента .Net
- 14. Изменение размера изображения (на стороне клиента)
- 15. Переопределить заголовок управления кешем на стороне клиента с помощью JavaScript?
- 16. Открыть файл с помощью javascript, на стороне клиента
- 17. Изменить mp3 bpm на стороне клиента с помощью javascript
- 18. Как выполнить замену на стороне клиента с помощью Javascript?
- 19. Получить атрибуты файла (на стороне клиента) с помощью Javascript
- 20. AllowColumnResize на стороне клиента с помощью функции javascript
- 21. показать вывод файла на стороне клиента с помощью jquery + javascript
- 22. Формат твита на стороне клиента с помощью javascript?
- 23. дезинфицировать ввод пользователя на стороне клиента с помощью javascript
- 24. хэштегом реализации на стороне клиента с помощью JQuery & JavaScript
- 25. Преобразование видео на стороне клиента с помощью javascript
- 26. Геокодирование на стороне клиента с помощью приложения Javascript on Rails
- 27. Проверка на стороне клиента Javascript с помощью PHP
- 28. Обновление событий на стороне клиента с помощью Javascript
- 29. На стороне сервера и на стороне клиента
- 30. Изменение данных/перерисовка данных на стороне клиента
Как это связано с программированием? (это звучало странно, обычно это наоборот) – Kobi
** @ Kobi: ** Я изменил вопрос для этого (и для ясности). –