从外部源加载图像时,是否可以使用JavaScript来动态更改收到的HTTP头信息?我试图控制图像的缓存(Expires
,Max-Age
等)客户端,因为我没有访问服务器。使用JavaScript修改HTTP头客户端
回答
我不认为Javascript实际上可以做到这一点:图像被浏览器请求,并由他来定义HTTP头问题。
使用某些自定义标题的一种方法是使用某种Ajax请求,但不传递任何<img>
标记;但你必须知道如何处理返回的数据......不要认为这会有很大帮助。
如果你想通过浏览器保存在缓存您的图片,您服务器发送的响应中的右头(如Etag,和/或到期 - 见mod_expires,为Apache,例如)
如果您想绝对确定浏览器将下载新图片,而不是使用它在缓存中的版本,则应每次使用不同的URL。
这通常使用时间戳作为URL的参数来完成;比如example.com/image.jpg?123456789 (123456789或多或少是当前的时间戳 - 显然少于更多,但你会明白:每秒浏览器将看到URL已更改)
编辑:
由服务器生成的Expires
头部,并且是进来的响应报头中的一个(它不是一个报头中的客户端的请求发送;参见List of HTTP headers )。
所以,你是绝对有来自客户端没有对其进行控制:这是必须配置做工作,这里的服务器...
如果你想要更多的答案:你是什么试图做到完全?为什么?
想要设置从外部源到客户端使用客户端技术而不是服务器(tomcat,apache)通过ajax的图像/闪存获取的更长过期max-age – cometta 2009-08-06 06:07:32
缓存指令在服务器的责任。你不能在客户端操纵它们。
也许您可以选择安装代理服务器,例如如果你瞄准公司员工?
正如其他人所说的,不,它不可能在客户端代码中操作来自服务器的http头和缓存指令。
什么是可能的
你做什么必须做的能力是确保你得到一个新的文件。这可以通过将唯一字符串附加到请求的URL作为查询字符串参数来完成。
例如如果你想确保你得到了每一个小时
<script type="text/javascript">
var d = new Date();
url += ("?" +d.getYear() + "_" + d.getDay() + "_" + d.getHours());
</script>
这样做是添加包含年,日,时的URL的值一个新的文件,所以这将是每个小时独特的,从而确保新文件请求。 (未测试!)
很明显,这可以做得更加通用,也可以进行微调,但希望你能明白。
什么是不可能的
什么,你不能做的是确保你不会从服务器检索新版本。
另一个注意事项:如果您不想缓存,可以使用'd。 getTime();'为时间戳,它会附加一个数字,比如'1249547501178' – Kobi 2009-08-06 08:32:42
- 1. 使用Http客户端
- 2. 无法修改SOAP WebService客户端中的http accept头 - JAX-WS 2.2.10 - JDK1.7
- 3. 客户端请求的ReastEasy Http标头
- 4. 错误提取HTTP头SOAP客户端
- 5. 客户端通常发送http头
- 6. gtm-http-fetcher修改HTTP头
- 7. 泽西REST客户端与Apache HTTP客户端4.5与改造
- 8. 修改客户端站点上的服务器http响应
- 9. 使用HTTP客户端的Java 4.5客户端获取语句
- 10. 修改SOAP头WCF客户端中的Mustunderstand属性
- 11. 使用Spring-WS客户端动态设置自定义HTTP头
- 12. 如何使用HTTP响应头向客户端发送CSS?
- 13. 执行javascript的http客户端...?
- 14. 使用HTTP客户端的Kerberos连接
- 15. 使用SSL的Jetty HTTP客户端
- 16. 在akka-http客户端中使用PlayJson
- 17. 异步HTTP客户端 - 如何使用
- 18. 如何使用HTTP客户端
- 19. PingFederate不修改HTTP标头
- 20. 设置HTTP头处理器:HTTP客户端
- 21. 在客户端JavaScript修改后获取DropDownList的值
- 22. Javascript - 如何修改客户端剪贴板中的文本?
- 23. 如何在客户端使用Grafana Http API javascript
- 24. 如何使用PHP或JavaScript获取客户端响应头?
- 25. 使用的HttpModules修改发送到客户端
- 26. 当客户端使用它时修改Torrent文件,可能吗?
- 27. JAX-WS客户端|用安全头发送客户端请求
- 28. Akka HTTP客户端akka-http akka-http-jackson
- 29. 客户端/用户可以修改会话吗?
- 30. Android上的HTTP客户端
这与编程无关? (听起来很奇怪,通常是相反的......) – Kobi 2009-08-06 04:53:24
** @ Kobi:**我修改了这个问题(为了清晰起见)。 – 2009-08-06 04:57:28