HTTP1.1协议在再体验

 1、HTTP请求  

* 分类:请求行、请求头、请求体  

* 请求行:描述请求的资源  

  * 格式:请求方法  资源路径  协议  

  * 例如:GET /day01/1.html HTTP/1.1

  * 请求方法

  * GET:请求内容追加在URL之后   

     * URL的长度有限制1k

   * POST:请求内容放置在请求体中  

* 请求头   

  * Accept:浏览器通知服务器,浏览器可以接受的数据类型

  * Accept-charset:浏览器通知服务器,浏览器支持的字符集

  * Accept-Encoding:浏览器通知服务器,浏览器支持的压缩格式  (这个压缩后能够减少流量、比较有用)

  * Accept-Language:浏览器通知服务器,浏览器支持的语言环境

  * Host:浏览器通知服务器,浏览器访问的服务器的主机名

  * If-Modified-since:浏览器询问服务器,浏览器本地是否修改过

  * Referer:浏览器通知服务器,浏览器当前页来自哪个页面   * 防盗链   

  * user-agent:浏览器通知服务器,浏览器端的基本信息

  * cookie:

  * connection:浏览器保持服务器,是否保持连接状态

  * Date:浏览器通知服务器,浏览器端的时间

* 请求体

 * 请求体与请求头之间存在一个空行    

 2、HTTP响应  

* 分类:响应行 响应头 响应体  

* 响应行:协议 状态码 状态信息   

* 例如:HTTP1.1 200 ok

* 状态码:服务器通知浏览器的行为,执行过程

* 1xx:服务器通知浏览器,服务器还没有处理完成

* 2xx: 服务器通知浏览器,服务器已经处理完成

* 200:处理完成

* 3xx: 服务器通知浏览器,服务器还需要浏览器进一步处理来完成整个操作

       * 302:服务器通知浏览器需要进一步操作,从http相应头获(location)得进一步操作的资源  (即重定向)

   * 304:服务器通知浏览器当前资源没有修改,从缓存中获取    

* 4xx:服务器通知浏览器,浏览器发送数据有误

   * 401:没有权限

   * 404:找不到资源  

* 5xx:服务器通知浏览器,服务器出现异常

  * 500:服务器异常    

  * 503:服务器未响应  * 响应头

* 响应体:服务器响应浏览器所有的内容   

* 注意:响应头与响应体之间存在一个空行  

3、注意  *在地址栏回车会找缓存文件

     *如果点刷新是重新请求

4、案例  假设一个页面里面有

<img src="1.jpg"/>

<img src="2.jpg"/>

<img src="3.jpg"/>

<img src="1.jpg"/>

试问它向服务器发送了几次请求?

请求过程:首先向服务请求、如果服务器有这个资源(图片、或者.html、或者.jsp或者servlet)就会返回给浏览器下载到本地

      第二次请求的时候会再本地查找是否存在资源如果有这个资源就不会再向服务请发送这个请求、所以是3次请求。

private void cjq_refresh(HttpServletResponse response) throws IOException{

  //refresh:服务器通知浏览器、刷新的时间以及url 单位:秒

  if(num>0){

     //将内如输入

      response.getWriter().write(num--);

    response.setHeader("refresh", "1");

  }else{

     response.setHeader("refresh","0,url=http://localhost/day01/1.html");

  }

}

private void cjq_encoding(HttpServletResponse response) throws IOException {

  //通知浏览器,服务器发送的数据时压缩的,并且指定压缩的格式

   response.setHeader("content-encoding", "gzip");

  //将大数据压缩后,发送给浏览器

   //准备大数据

   StringBuilder builder = new StringBuilder();

  for(int i = 0 ; i < 80000 ; i ++){

     builder.append("cjqq");

   }

  String data = builder.toString();

  //确定压缩的位置

   ByteArrayOutputStream baos = new ByteArrayOutputStream();

 //压缩  gzip

   GZIPOutputStream gzip = new GZIPOutputStream(baos);

  //压缩的位置

  //压缩数据

 gzip.write(data.getBytes());

  gzip.close();

 //获得压缩后的字节数组

  byte[] endData = baos.toByteArray();

//将压缩的数据发送给浏览器  --

   response.getOutputStream().write(endData);

 }

private void cjq_type(HttpServletResponse response) throws IOException {

  //content-type:服务器通知浏览器,服务器发送的数据的编码

  response.setHeader("content-type", "text/html;charset=UTF-8");

   //与上面等效

  //response.setContentType("text/html;charset=UTF-8");

  response.getWriter().write("呵呵");

}

private void cjq_sendRedirect(HttpServletResponse response) {

   //跳转 (重定向) -- 服务器通知浏览

  //设置http响应头

  response.setHeader("location", "http://localhost/day01/1.html");//端口默认为80

   //状态码确定行为   response.setStatus(302);

  //与上面两句话是等效的、都是重定向、

  //:服务器通知浏览器需要进一步操作,从http相应头获(location)得进一步操作的资源、意思在地址栏上发送请求一次

  //response.sendRedirect("http://localhost/day01/1.html");  

}

时间: 2024-10-08 02:04:17

HTTP1.1协议在再体验的相关文章

HTTP1.1协议中文版-RFC2616

转自:http://www.cnpaf.net/Class/HTTP/200811/23277.html 说明 本文档规定了互联网社区的标准组协议,并需要讨论和建议以便更加完善.请参考 “互联网官方协议标准”(STD 1)来了解本协议的标准化状态.本协议不限流传发布. 版权声明 Copyright (C) The Internet Society (1999).   All Rights Reserved. 摘要 超文本传输协议(HTTP)是一种为分布式,合作式,超媒体信息系统.它是一种通用的,

Citrix发布支持Framehawk技术的HDX协议,用户体验优势进一步扩大

Framehawk技术是什么?关心Citrix的朋友们可能还记得在这是一家在去年一月份被Citrix收购的公司.Framehawk曾经是一家在虚拟化业内很知名的厂商,它的Lightweight FramebufferProtocol (LFP:轻型帧缓冲协议)是自家研发的专利技术(LFP作用和Teradici公司的PC-over-IP(PCoIP)协议类似,只是后者效率较低,VMware View正是租用Teradici公司PCoIP协议作为其传输协议,所以体验效果不好,另外最近Amazon推出

Ubuntu再体验之【浏览器】--Chromium安装拓展程序、安装插件(360极速浏览器插件)

上次谈到了安装Chromium的Flash插件http://blog.csdn.net/rovast/article/details/38476129,有兴趣的同学可以再去看看 这次我们来看看如何安装Chrome插件(或者是360Chrome插件) [转载请注明出处:blog.csdn.net/rovast] 1.为什么要安装插件 在重新折腾上了Ubuntu Kylin 14.04后发现,谷歌被大陆屏蔽了,也就是通过在线安装插件的套路不可用了.但是在使用Windows操作系统的朋友注意到,国产的

Cookie&amp;&amp;Session会话技术之再体验

1.转发与重定向[****]    * 重定向:重新确定请求方向        * 发送者:服务器 --> 响应(response)浏览器        * 执行者:浏览器 --> 重新请求        * 跳转        * response.sendRedirect("/day04/1.html");        * //完全等价,隐藏了HTTP协议的具体要求        * response.setStatus(302);        * response

Servlet服务器端编程之再体验

1.什么是Servlet?    * 服务器端Java程序,servlet需要交给服务器来运行.    * 与javax.servlet.Servlet接口有关的java程序    * sun公司提供一套servlet接口(API)具体实现的是靠web服务器(比如Tomcat.webLogic.JBoss等)    2.如果使用servlet?[必须]    * 创建web项目    * 创建一个类,并实现Servlet接口    * 交给服务器运行 /WEB-INF/web.xml      

HTTP1.1 协议

Response Headers 响应头 Expires 设置响应内容的过期时间 过期时间头信息属性值只能是HTTP格式的日期时间,HTTP的日期时间必须是格林威治时 间(GMT),而不是本地时间.举例: Expires: Fri, 30 Oct 1998 14:19:41"EEE, dd MMM yyyy HH:mm:ss z", Locale.US); httpDateFormat = new SimpleDateFormat("EEE, dd MMM yyyy HH:m

HTTP1.1协议详解

1.3协议详细讲解 请求行:GET /App1/1.html HTTP/1.1 GET:请求方式.默认的请求方式.其他常用的请求方式还有POST. GET的特点:默认的请求方式. /App1/c.html?username=sdsfds&password=234324 把表单的请求的数据放在了请求的URI的后面.?username=sdsfds&password=234324 这样不好:暴露数据:请求行长度有限. POST的特点(经常使用的):借助HTML中的form表单.<form

既然HTTP1.1协议里每个连接默认都是持久连接,那么为何当今所有报文都在使用Connetion:Keep-Alive

说白了,如果你发起时有,那么服务器支持,回应时也会有,不支持,也就没有了.所以一般客户端都会默认带着发,服务端返回不返回就是服务端的事了. 1. 支不支持长连接,关键在于服务端是否支持. 如果服务端不支持,你Connetion:Keep-Alive也没用. 2. HTTP1.1 默认的意思,就是既支持长连接又支持短连接,默认设置为长连接. 3. 短连接不是废弃了,很多应用短连接反而更好也更简单.

C语言再体验总结(一)

题记: 初入ios,一直在思考如何成为一个好的程序员.大学错过了太多的所谓的兴趣,应试教育提不起一丝兴趣,竟在大四弥留之际,发现了自己一个不得已,却又新鲜好奇的兴趣.尝试了很多东西,一旦提到职业却又觉得陌生,觉得害怕.凡事总有结果,过程便是自己的体悟,即便不如人意也会丰富多彩. -----致 程序媛 喵之纸鸢 再次学习C语言的总结 一.关键字:特殊含义的单词 32 颜色特殊 小写 1.数据类型 20个 1.1 基本数据类型(5个)void char int float double 1.2 类型