Http Response头的执行顺序?

时间:2014-01-16 09:55:43

标签: javascript asp.net http http-headers fiddler

我看到 this plugin 使用Ajax 下载文件和其他一些后备技术。

但由于所有浏览器都不支持ajax下载文件功能,因此他使用了iframe技巧。 (这很容易实现)

但有一件事引起了我的注意:

  

他还添加了一个选项,告诉您文件何时完成   下载。

他是通过cookie完成的。他通过cookie来查看setInterval是否cookie。只要cookie不存在 - 文件就没有完成下载。(当Content-Disposition: attachment; filename=Report0.pdf存在时 - 文件已下载)

因此下载文件的标题是:

Set-Cookie: fileDownload=true; path=/

他补充道:

set-cookie

但后来我想 - 谁说content-disposition:attachment;filename=1.jpg在文件完成下载后被称为

问题:

查看实际标题:

enter image description here

1 - 浏览器是否根据实际的出现顺序消化每个标头?

2 - 是否有任何标题必须之前出现在其他标题中?

3 - 每个标题的摘要 - 阻止摘要直到当前的hedare摘要完成?我的意思是:行filename=1.jpg阻止浏览器消化下一个标题 - 直到{{1}}完成加载?

nb

我也试过通过提琴手调查它,但我没有得到任何结论。(我的意思是如何在小提琴手中测试它?)

1 个答案:

答案 0 :(得分:2)

你是对此持怀疑态度。

没有要求客户端等到响应主体完成后才能评估正文之前的Set-Cookie标题,并且实际上有充分的理由相信大多数浏览器会在正文完成之前设置cookie (因为许多网页会在HTML页面的JavaScript中查看document.cookie)。

事实上,我测试了这个(使用你可以在这里看到的MeddlerScript:http://pastebin.com/SUwCFyxS)并且发现IE,Chrome和Firefox都在下载完成之前设置了cookie,并且即使用户点击也设置了cookie下载时“取消”。

HTTP规范包含Trailer(在响应主体之后出现的标头)的概念,但这些很少使用,并且在许多客户端(例如WinINET / IE)中不受支持。如果客户端 支持预告片,则服务器可以在主体之后发送Set-Cookie标头,这意味着客户端在完成下载之前无法看到它。