首页 > 代码库 > http请求

http请求

=============================请求响应过程============================
1、请求、相应报文的组成
请求方法URI协议/版本
请求头
请求正文

GET /simple.html HTTP/1.1<CRLF> ----- 首行
Accept: text/html<CRLF>
Accept-Language: zh-cn<CRLF>
Accept-Encoding: gzip, deflate<CRLF> -- 头部
User-Agent: Mozilla/4.0<CRLF>
Host: localhost:8080<CRLF>
Connection: Keep-Alive<CRLF>
<CRLF>

每行结束都会有个结束符,在消息实体中是连续的字符,首行和头采用ASCII编码,正文采用任意格式编码(一般采用utf-8解码、编码),
GET请求没有正文,post请求可以有

2、请求相应过程
建立TCP连接、发送命令(首行)、发送请求头、服务器应答(返回状态吗)、应答头信息、向浏览器发送数据、关闭TCP连接

===========================相应状态码================================
  1XX-信息类(Information),表示收到Web浏览器请求,正在进一步的处理中
  2XX-成功类(Successful),表示用户请求被正确接收,理解和处理例如:200 OK
3XX-重定向类(Redirection),表示请求没有成功,客户必须采取进一步的动作。
4XX-客户端错误(Client Error),表示客户端提交的请求有错误 例如:404 NOTFound,意味着请求中所引用的文档不存在。
5XX-服务器错误(Server Error)表示服务器不能完成对请求的处理:如 500


===========================HTTP缓存==================================
来源:http://www.cnblogs.com/yjf512/p/324882.html

windows下存放的临时文件存放多久由服务端设置
客户端第一访问资源:服务端在返回资源的同时也返回了Expires: Sun, 16 Oct 2016 05:43:02 GMT。记录临时文件过期的最后日期。
但是客户端的日期一般不准。于是在http1.1中,Cache-Control: max-age:600。设置相对时间,在10分钟内可访问缓存文件。如同时设置,则以Cache-Control
为准。


============================条件请求=====================================
1、如果存在某文件更新频繁,服务器希望客户端可以时不时来看看文件是否过期。
第一次请求资源,服务端返回资源同时也返回Last-Modifed:Wed, 07 Aug 2013 15:32:18 GMT,这个时间一同记录到缓存中,
第二次访问(没有设置Expires和Cache-Control),服务端访问资源时会带上If-Modify-since:Wed, 07 Aug 2013 15:32:18 GMT ;
如资源在这个时间没修改,返回304改客户端,如果修改了,返回200,并带上资源内容。

2、ETag
客户端第一次访问资源,返回资源同时返回ETag:1234,告诉客户端这个资源的标签是1234,如果服务端修改了资源,这个标签就会不同。
第二次访问资源,由于缓存中已有ETag,客户端会看资源是否过期,所以会带上If-None-Match: 1234,告诉服务端:如果你那边的资源还是1234标签的资源,
你就返回304告诉我,不需要返回资源内容了。如果不是的话,你再返回资源内容给我就行了。服务端就比较下Etag来看是返回304还是200。

注:ETag很少用,它的计算是通过算法得出,会占用服务器资源

 


=================三种刷新,浏览器做的操作==========================
1、输入URL:如果有缓存文件,则读取缓存文件
2、F5:浏览器发送一个请求会带上If-Modify-since:Wed, 10 Aug 2013 15:32:18 GMT,看看资源是否过期
3、ctrl+F5:删除缓存文件,强行更新数据

 

==============================Ajax请求===============================
GET方法请求资源,浏览器一般会有缓存,POST方法请求资源浏览器没有缓存



http请求