使用JavaScript在客户端修改HTTP头

使用JavaScript在客户端修改HTTP头,javascript,caching,http-headers,Javascript,Caching,Http Headers,是否可以使用JavaScript动态更改从外部源加载图像时接收的HTTP头?我试图控制客户端图像的缓存(Expires,Max Age,等等),因为我没有访问服务器的权限。我认为Javascript实际上无法做到这一点:图像由浏览器请求,由他定义要发布的HTTP头 使用一些自定义头的一种方法是使用某种Ajax请求,而不是传递任何标记;但是你必须知道如何处理返回的数据。。。我想这不会有多大帮助 如果希望浏览器将图像保存在缓存中,服务器必须在响应中发送正确的头文件(例如,和/或Expires,请参阅

是否可以使用JavaScript动态更改从外部源加载图像时接收的HTTP头?我试图控制客户端图像的缓存(
Expires
Max Age
,等等),因为我没有访问服务器的权限。

我认为Javascript实际上无法做到这一点:图像由浏览器请求,由他定义要发布的HTTP头

使用一些自定义头的一种方法是使用某种Ajax请求,而不是传递任何
标记;但是你必须知道如何处理返回的数据。。。我想这不会有多大帮助

如果希望浏览器将图像保存在缓存中,服务器必须在响应中发送正确的头文件(例如,和/或Expires,请参阅,例如,对于Apache)

如果您想绝对确保浏览器将下载新图像,而不是使用缓存中的版本,那么每次都应该使用不同的URL。
这通常是使用时间戳作为URL的参数来完成的;比如example.com/image.jpg?123456789(123456789或多或少是当前的时间戳——显然比more小,但你知道了:每秒钟,浏览器都会看到URL发生了变化)


编辑问题后进行编辑:

Expires
头由服务器生成,是响应中的头之一(它不是客户端在请求中发送的头;请参阅)

因此,您完全无法从客户端对其进行控制:必须配置服务器才能完成工作,这里



如果你想要更多的答案:你到底想做什么?为什么?

我认为Javascript实际上无法做到这一点:图像由浏览器请求,由他定义要发布的HTTP头

使用一些自定义头的一种方法是使用某种Ajax请求,而不是传递任何
标记;但是你必须知道如何处理返回的数据。。。我想这不会有多大帮助

如果希望浏览器将图像保存在缓存中,服务器必须在响应中发送正确的头文件(例如,和/或Expires,请参阅,例如,对于Apache)

如果您想绝对确保浏览器将下载新图像,而不是使用缓存中的版本,那么每次都应该使用不同的URL。
这通常是使用时间戳作为URL的参数来完成的;比如example.com/image.jpg?123456789(123456789或多或少是当前的时间戳——显然比more小,但你知道了:每秒钟,浏览器都会看到URL发生了变化)


编辑问题后进行编辑:

Expires
头由服务器生成,是响应中的头之一(它不是客户端在请求中发送的头;请参阅)

因此,您完全无法从客户端对其进行控制:必须配置服务器才能完成工作,这里



如果你想要更多的答案:你到底想做什么?为什么?

缓存指令由服务器负责。你不能在客户端操纵它们


也许您可以选择安装代理服务器,例如,如果您的目标是公司员工?

缓存指令由服务器负责。你不能在客户端操纵它们


也许您可以选择安装代理服务器,例如,如果您的目标是公司员工?

正如其他人所说,不,不可能在客户机代码中操纵来自服务器的http头和缓存指令

什么是可能的

您所能做的就是确保获得一个新文件。这可以通过将唯一字符串作为查询字符串参数附加到请求的URL来实现

e、 如果你想确保每小时都有一个新文件

<script type="text/javascript">

var d = new Date();
url += ("?" +d.getYear() + "_" + d.getDay() + "_" + d.getHours());

</script>

var d=新日期();
url+=(“?”+d.getYear()+““+d.getDay()+““+d.getHours());
这样做的目的是在url中添加一个包含年、日和小时的值,这样每个小时的值都是唯一的,从而确保新的文件请求。(未经测试!)

显然,这可以变得更加通用和微调,但希望您能理解

什么是不可能的


您不能做的是确保不会从服务器检索新版本。

正如其他人所说,不,不可能在客户端代码中操纵来自服务器的http头和缓存指令

什么是可能的

您所能做的就是确保获得一个新文件。这可以通过将唯一字符串作为查询字符串参数附加到请求的URL来实现

e、 如果你想确保每小时都有一个新文件

<script type="text/javascript">

var d = new Date();
url += ("?" +d.getYear() + "_" + d.getDay() + "_" + d.getHours());

</script>

var d=新日期();
url+=(“?”+d.getYear()+““+d.getDay()+““+d.getHours());
这样做的目的是在url中添加一个包含年、日和小时的值,这样每个小时的值都是唯一的,从而确保新的文件请求。(未经测试!)

显然,这可以变得更加通用和微调,但希望您能理解

什么是不可能的


您不能确保不会从服务器检索新版本。

这与非编程有什么关系?(这听起来很奇怪,通常是相反的…@Kobi:我修改了这个问题(为了清楚起见)。这与编程无关吗?(这听起来很奇怪,通常是相反的…@Kobi:我修改了这个问题(为了清楚起见)。想使用客户端技术而不是服务器(tomcat,apache)通过Ajax为从外部源获取图像/闪存设置更长的到期最长期限吗