• 2005-09-16

    http协议 - [工作学习]

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://jimsu.yourblog.org/logs/437423.html

    [http请求] Get URL HTTP/1.1 Host: www.sina.com.cn User-Agent: Referer: http://www.sina.com.cn/haha.html Cookie: 对于url可能是个简单的URL,比如 /index.html;也可能带有各种参数,比如 /GetInfo.asp?id=12&grade=13;甚至存在汉字参数,此时url做了编码,比如 /GetInfo.asp?name=%E4%B8%AD%12 根据http1.1规范,1条连接可能存在多个Get活动。http1.0则没有这种情况。 [http响应] Http/1.1 200 OK Content-Type: text/html 空行 <html>html code</html>由于是http1.1后面可能还有多个http response. 对于http response header的解释。 参考:http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html code: 200-299表明访问成功; 200:OK;但是可能content-length=0或者文件格式不是acsii的,也可能被重定向。 300-399表明需要客户端反应来满足请求; 304:没有修改过; 305:使用proxy; 400-499和500-599表明客户端和服务器出错; 403表示访问被禁止。 404:没有找到文件; Content-Length: 内容长度;如果没有这项,断点续传就没办法了。 Content-Type:xx; Charset=utf-8或者iso-8859-1或者gb2312或者big5 text/html:html网页,xml; image/jpeg: jpg图像; image/gif: gif图像,其body是以GIF89a开始; application/x-shockwave-flash: flash动画; application/x-www-form-urlencode:是post出去的type; application/octet-stream:是普通的stream格式。 Content-Type: text/html Content-Encoding: gzip,此时采用的是http压缩方式; text/plain: 如果是png文件,还可以做压缩,呵呵。 Transfer-Encoding: chunked:一种块传输方式;无content-length,采用的格式如下: 16进制长度值\n\r数据 Date:这个对文件是否修改进行验证,判断是否需要返回一个304错误给客户端。 Server:服务器信息 Location: ftp://10.1.1.1/aaa.rar,重定向到其他URI,也有可能是其他的服务器。 服务器对文件扩展名的验证: 一个mini web server,为了系统的安全性,有必要对Get xxx.ext扩展名进行验证,不在范围内的不允许请求,并返回一个403 forbidden错误。 除了扩展名,还有一些比如.,../等可以访问上层目录的也需要过滤掉。 [网页的重组] 将多个flow生成到一个tar文件mhtml中,包括相关的html,css,js,jpg,gif等。 frame的解决。 proxy,tunnel的解决。 更多的http协议请参考rfc文档,w3c有很多关于www的规范。

    收藏到:Del.icio.us




发表评论

您将收到博主的回复邮件
记住我