看来我通过jQuery的HEAD
方法发送的$.ajax({...});
请求正在返回给定资源的内容(至少在Firefox中...... IE似乎正常运行),而不是而不仅仅是标题。我正在尝试仅捕获Content-Length
标头属性,以便在图像预加载器中使用,但似乎仅通过查询Content-Length
,它就会下载内容本身。
此处的操作顺序为:
background-image
查找给定页面中的所有元素,并使用网址填充数组(imageTemp
)。HEAD
请求,获取Content-Length
并将其添加到bytesTotal
以及填充数组(imageData
)网址和该图片的Content-Length
。
setInterval
事件处理程序以定期检查是否所有Ajax HEAD
请求都已完成。HEAD
请求完成后,开始将图片加载到Image()
的{{1}}个对象中,并将关联的图片imageData
值添加到Content-Length
值\ bytesLoaded
张图片后,预加载器已完成。这是我目前的脚本:
bytesLoaded == bytesTotal
这与我在Ajax HEAD request via Javascript/jQuery的问题直接相关,但它肯定不重复,因为问题已从先前解决的问题扩展。
答案 0 :(得分:2)
我鼓励您设置Fiddler(或其他一些HTTP数据包嗅探器)并查看实际通过线路的内容 - 发送的确切请求和收到的确切响应。这将帮助您解决问题是在服务器还是客户端上。
答案 1 :(得分:1)
看起来很奇怪。这应该“应该”起作用。
我无法肯定地说这是问题,但是我在这里就是这样:
如果您执行HEAD请求,服务器本身不应该向您发送超过头数据。 几乎每一个你可以获得的网络服务器都是为了这一点。
因此不太可能出现服务器问题。但是它可能,取决于运行的应用程序。
但是我在许多爬行环境和事情中已经多次看到这个问题,并且一个非常常见的失败点是重定向。
许多内部库遵循重定向(正如他们应该的那样),但“忘记”了HEAD请求。
我曾经查过RFC,但还不清楚到底应该做些什么。
但是非常严格地解释了HEAD请求应该给你Location头。
但是大多数“用户”可能期望重定向背后的任何头部数据。
例如,Zend ZF直到今天还有这个问题。 scrapy在以后的版本中修复了它。
很抱歉,我无法给你一个更好的答案,但你的代码在这个问题上看起来是正确的,所以它的一些试错调试......