http协议

http协议

浏览器好服务器通讯的协议,信息交互格式,http是基于TCP/IP协议基础上的一种新型协议。

特点是一次请求对应一次响应。请求只能是客户端发出,服务器只负责响应。


假设文本应用中有一个HTML文件,文件中嵌有三幅图片。我们访问这个页面服务器会响应几次?

答案是4次,首先请求页面,服务器响应页面,然后一次请求页面中的三幅图片。完整过程就是第一次请求页面然后响应页面

然后第234次分别发现页面中有图片src就分别请求,然后服务器分别响应。



HTTP请求

GET /books/java.html HTTP/1.1

分为三部分:请求方式,请求资源,协议版本。

下图中是请求百度地图主页的请求信息



请求方式有其中,但是常用的就两种

GET:

请求参数将会附加在在URL后面作为请求地址的一部分带到服务器,可以传输的数据大小一般不允许超过8KB

POST:

请求参数将会在http实体中进行传输,安全可靠,对数据大小没有限制

大体标准格式:

若干请求头

        Accept: */*    

        Accept-Charset: ISO-8859-1

        Accept-Encoding: gzip,compress

        Accept-Language: en-us,zh-cn

        Host: www.it315.org:80

        If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT

        Referer: http://www.it315.org/index.jsp

        User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)

        Cookie

        Connection: close/Keep-Alive   

        Date: Tue, 11 Jul 2000 18:23:51 GMT

    实体内容

        Post提交的内容


http响应

状态行

        HTTP/1.1 200 OK

        协议版本

        状态码--用来表示本次请求的处理结果的代码

            200 陈宫

            302请求重定向

            304/307 提示浏览器使用缓存

            404 找不到资源

            500 服务器出错

    若干响应头

        Location: http://www.it315.org/index.jsp

        Server:apache tomcat

        Content-Encoding: gzip

        Content-Length: 80

        Content-Language: zh-cn

        Content-Type: text/html; charset=GB2312

        Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT

        Refresh: 1;url=http://www.it315.org

Expires:-1

        Content-Disposition: attachment;filename=aaa.zip

        Transfer-Encoding: chunked  

        Set-Cookie:SS=Q0=5Lb_nQ; path=/search

        ETag: W/"83794-1208174400000"


响应缓存

        Expires: -1 ---- 通知浏览器是否缓存当前资源 ,如果这个头的值是一个以毫秒为单位值就是通知浏览器缓存资源到指定的时间点,如果值是0-1则是通知浏览器禁止缓存

        Cache-Control: no-cache  -- 通知浏览器是否缓存资源

        Pragma: no-cache    -- 通知浏览器是否缓存资源

        之所以三个头是一个功能,是因为历史原因.不同的浏览器对这三个头支持的不同,一般来说这三个头要同时使用确保不同的浏览器都能实现控制缓存的功能  

        Connection: close/Keep-Alive   

        Date: Tue, 11 Jul 2000 18:23:51 GMT

           实体内容

注意:一般第一次请求服务器的时候服务器会发送资源,并且会把这鞋资源缓存在浏览器的一个缓存区中。第二次浏览器再去访问的时候服务器就会发送304或者307告诉浏览器我的资源已经给你存在缓存文件夹中了,请使用缓存,别再想我要了。


那么如果服务器的资源更新了浏览器还要不要继续使用缓存资源呢?其实不必担心这个问题。请求头和响应头有两个重要的头信息:

            请求端:If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT

             服务器端:Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT

这两个头是配合使用的。


当你访问一个网站的时候,因为你的缓存中没有网站中的资源(图片等),于是服务器就会首先将资源发送给你,并且响应的时候给你一个Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT(最后一次修改资源的时间),把这个时间保存给客户端就变成了If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT 然后第二次访问的时候就客户端就带上If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT去访问服务器,服务器首先就查看你带过的来的时间和我本身的资源的最后一次修改时间匹配否,如果匹配就发送给客户端304307告诉浏览器继续使用缓存资源。如果不匹配证明服务器更新了资源了, 就会重新发送资源









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值