HTTP标头是否告诉我们文件是否已下载,上传或访问?

时间:2017-07-26 12:34:33

标签: http http-headers handshake

我正在使用HTTP Headers,如下所示。

    GET /success.txt HTTP/1.1
    Host: detectportal.firefox.com
    User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:54.0)
    Accept: */*
    Accept-Language: en-US,en;q=0.5
    Accept-Encoding: gzip, deflate
    Cache-Control: no-cache
    Pragma: no-cache
    Connection: keep-alive

    HTTP/1.1 200 OK
    Content-Type: text/plain
    Content-Length: 8
    Last-Modified: Mon, 15 May 2017 18:04:40 GMT
    ETag: "ae780585fb7d28906123"
    Accept-Ranges: bytes
    Server: AmazonS3
    X-Amz-Cf-Id: iMjet-5hLAEAf8HyvtHWnotG4mkD7VeN7A==
    Cache-Control: no-cache, no-store, must-revalidate
    Date: Mon, 24 Jul 2017 18:24:08 GMT
    Connection: keep-alive
从上面的握手中可以看出,这是一次成功的双向握手。我只是想知道这种类型的握手是否能告诉我们文件是否被下载,上传或访问?如果不是,我们如何知道从Header文件中发生了哪些操作? 谢谢!

2 个答案:

答案 0 :(得分:0)

  

有没有想知道pdf文件是从[包含这些] HTTP头[s]的捕获网络数据包中下载的?

没有。标题描述了资源,以及可选择的资源内容。

在阅读标题后,没有人阻止您关闭连接,导致内容无法下载。

因此,只要看到这些标题在网络上飞过,就无法证明有人真正查看了该响应的内容,即使有任何内容。

但总的来说,如果请求有一个有效负载,你可以说上传了“某些东西”,如果一个响应有一个有效负载,你可以说下载了“东西”。通过检查请求的内容类型标头,可以获得上传的确切内容。请注意,“文件”的概念在通过网络传输时会变得模糊。响应请求的Web服务器可以在内存中生成PDF文档,并使用在浏览器中提示“另存为...”对话框的标题来提供该文档。那你可以说下载了一个“文件”吗?如果站点提供服务器磁盘上存在的CSS文件(浏览器呈现但不存储在磁盘上)(禁止缓存)会怎样?那个“文件”被“下载”了吗?

请参阅HTTP response headers valid with no Transfer-Encoding and Content-Length?如何确定邮件的长度。

答案 1 :(得分:0)

如果您想通过查看标题来了解HTTP响应是否适用于HTML文档以外的文件,请检查Content-Type标题。它包含要发送的内容的MIME type,例如text/html表示HTML文件,text/css表示CSS文件,application/pdfapplication/x-pdf表示PDF文件, video/mp4获取MP4视频等。官方列表位于http://www.iana.org/assignments/media-types/media-types.xhtml