• 10_HTTP协议_入门知识


    【什么是HTTP协议】

    浏览器客户端 和  服务器端之间的数据传输的格式规范

    客户端连上web服务器后,若想获得web服务器中的某个web资源,需遵循一定的通讯格式,HTTP协议用于定义客户端与web服务器通讯的格式。

    HTTP(hypertest transfer protocol),超文本传输协议,它是TCP/IP协议的一个应用层协议,用于定义WEB浏览器和Web服务器之间交换数据的过程。

    【查看http协议的工具】

    * 火狐的firebug插件

    * 谷歌的"审查元素"

    * 使用系统自带的telnet工具(远程访问工具)

      1. telnet localhost 8080        访问TomCat服务器

      2. ctrl+]   回车                     可以看回显

      3. 输入请求内容   

    GET /MyWeb/hello.html  HTTP/1.1
    
    Host: localhost:8080

      4. 回车,即可看到服务器响应的信息

    请求内容无法在Talnet窗口显示的解决方法:

    telnet localhost 8080,回车进入talnet窗口,在Telnet窗口中按下“Ctrl+]”;然后,输入“set localecho”命令,再连续按两次回车键,再输入HTTP请求即可见。

    【HTTP请求】

    HTTP请求:客户端连上服务器后,向服务器请求某个web资源,称之为客户端向服务器发送了一个HTTP请求。一个完整的HTTP请求包括如下内容:

    一个请求行、若干请求头、实体内容。

    [ 在tomcat服务器的webapp下新建如下web应用 ]

    启动Tomcat服务器,在ie浏览器中输入:http://localhost:8080/myWeb/hello.html

    【请求行】

    [ 请求方式 ]

    请求行中的GET称之为请求方式,请求方式有;

    POST、GET、PUT、DELETE、HEAD、OPTIONS、TRACE

    常用的请求方式:POST、GET

    1.用户如没有设置,默认情况下浏览器向服务器发送的都是get请求,例如在浏览器直接输地址访问,点击超链接都是get。

    2.用户如果想把请求方式改为POST,可以通过更改表单的提交方式实现。

    [ POST 和 GET的区别 ]

    不管POST还是GET,都用于向服务器请求某个WEB资源,这两种方式的区别主要表现在数据传输上:

    * GET请求方式:可以在请求的URL地址后以?的形式带上交给服务器的数据,多个数据之间以&进行分割,

      例如:GET  /myWeb/hello.html?name=zhangsan&id=10086  HTTP/1.1

      注意:GET请求,其URL地址后附带的参数是有限制的,其数据容量通常不能超过1K。

    * POST请求方式:可以在请求的实体内容中向服务器发送数据

      注意:传送的数据量无限制。(比如传输文件,使用POST请求来传输文件)

    【消息头分析】

    Accept: text/html,image/*         --告诉服务端,客户端浏览器所接受的数据类型

    Accept-Charset: ISO-8859-1             --告诉服务端,浏览器采用的数据编码格式

    Accept-Encoding: gzip,compress        --告诉服务端,浏览器接受的数据压缩格式

    Accept-Language: en-us,zh-              --告诉服务端,浏览器接受的语言  

    Host: www.7k7k.com:80                    --请求发出的主机端口(必须),通过这个头告诉服务器,想访问的主机和端口

    If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT                       --浏览器缓存的最后修改时间

    Referer: http://www.7k7k.com/index.jsp                                      -- 当前请求来自于哪里 (防止非法链接),告诉服务器,它是从哪个资源来访问服务器

    User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)   --浏览器的类型

    Cookie:name=eric                                   ---浏览器保存的cookie数据

    Connection: close/Keep-Alive                   ---浏览器和服务器的连接状态close:关闭。keep-alive:保持连接

    Date: Tue, 11 Jul 2000 18:23:51 GMT      --请求发出的时间

    【HTTP响应】

    一个HTTP响应,代表服务器客户端回送的数据,它包括:

    一个状态行、若干响应头(消息头)、实体内容。

    其中的一些消息头和实体内容都是可选的,消息头和实体内容之间要用空行隔开。

    补充对应给的响应正文(即实体内容)

    【HTTP响应--------状态行(响应行)】

    [ 格式 ] HTTP版本号  状态码  原因叙述<CRLF>

    [ 例子 ] HTTP/1.1     200    OK

    [ 关于状态码 ]

    状态码用于表示服务器对请求的处理结果,它是一个三位的十进制数。响应码分为5大类。

     常见状态码:

      200:请求处理完成,成功返回!

      302:需要浏览器进一步请求,才能完成。

      404:浏览器端的错误。没有找到资源。

      500:服务器端的错误。

    【HTTP响应---响应头】

    Location: http://www.7k7k.com/index.jsp    --重定向的地址。结合302状态使用完成重定向的效果,用于告诉客户找谁

    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                       --定时刷新或每隔n秒跳转资源,告诉浏览器多长时间刷新一次

    Content-Disposition: attachment; filename=aaa.zip   -- 服务器告诉给浏览器以下载方式打开资源

    Transfer-Encoding: chunked            

    Set-Cookie:SS=Q0=5Lb_nQ; path=/search               -- 服务器发送给浏览器的cookie数据

    Expires: -1                                                            --通知浏览器不使用缓存(-1或0,是不缓存)

    Cache-Control: no-cache

    Pragma: no-cache   

    Connection: close/Keep-Alive                                  --连接状态

    Date: Tue, 11 Jul 2000 18:23:51 GMT                     --响应发出的时间

  • 相关阅读:
    eclipse中创建maven项目
    Java Build Path Entries 没有maven怎么办
    Eclipse导入Maven项目详解(新手初学)
    windows下Tomcat详细安装配置教程
    Tomcat 下载安装与配置
    Python 生成个性二维码
    ERROR 1010 (HY000): Error dropping database (can't rmdir './nsd', errno: 39)
    发邮件的python脚本
    Centos7 安装MySQL 5.7 (通用二进制包)
    js数字简写
  • 原文地址:https://www.cnblogs.com/HigginCui/p/5943864.html
Copyright © 2020-2023  润新知