Java Web(十一):HTTP

一、HTTP简介

1、HTTP定义

HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议;HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。

2、HTTP的特点

  • 基于TCP/IP通信协议来传递数据,默认端口号为80;
  • HTTP是无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
  • HTTP是媒体独立的:这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送。客户端以及服务器指定使用适合的MIME-type内容类型。
  • HTTP是无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。每次请求之间相互独立,不能交互数据。

二、HTTP请求与响应的过程

                                img

1、首先客户机与服务器需要建立连接,HTTP的工作开始。
2、建立连接后,客户机发送一个请求给服务器(请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容)。
3、服务器接到请求后,给予相应的响应信息(其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容)。
4、客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。

三、HTTP请求消息

                        

请求消息字符串格式:
  	POST /login.html    HTTP/1.1
	Host: localhost
	User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0
	Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
	Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
	Accept-Encoding: gzip, deflate
	Referer: http://localhost/login.html
	Connection: keep-alive
	Upgrade-Insecure-Requests: 1
            
	username=zhangsan 

1、请求行:用来说明请求类型,要访问的资源以及所使用的HTTP版本

     请求行格式:请求方法 请求url 请求协议/版本,如:POST /login.html   HTTP/1.1

     请求方式:

序号方法描述
1GET请求指定的页面信息,并返回实体主体。
2HEAD类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头
3POST向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改。
4PUT从客户端向服务器传送的数据取代指定的文档的内容。
5DELETE请求服务器删除指定的页面。
6CONNECTHTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。
7OPTIONS允许客户端查看服务器的性能。
8TRACE回显服务器收到的请求,主要用于测试或诊断。
9PATCH是对 PUT 方法的补充,用来对已知资源进行局部更新 。

      常用的2种请求方式:
             GET:
                        1. 请求参数在请求行中,在url后。
                        2. 请求的url长度有限制的
                        3. 不太安全
              POST:
                        1. 请求参数在请求体中
                        2. 请求的url长度没有限制的
                        3. 相对安全
2、请求头:用来说明服务器要使用的附加信息
            请求头名称: 请求头值
            常见的请求头:
                1. User-Agent:访问服务器所对应的的浏览器版本信息。
                    作用:可以在服务器端获取该头的信息,解决浏览器的兼容性问题

                2. Referer:告诉服务器,请求资源的地址,如:http://localhost/login.html
                     作用:防盗链和统计工作;
3、请求空行:用于分割请求头和请求体的。
4、请求数据(正文):封装请求参数,可以添加任意的其他数据。

四、HTTP响应数据

响应数据的格式

HTTP/1.1 200 OK
Content-Type: text/html;charset=UTF-8
Content-Length: 101
Date: Wed, 06 Jun 2018 07:08:42 GMT

<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
  hello , response
  </body>
</html>

1、响应行

  • 响应行的格式:协议/版本 响应状态码 状态码描述
  • 响应状态码:服务器告诉客户端浏览器本次请求和响应的一个状态。

       状态码的分类:

              1xx:信息,服务器收到请求,需要请求者继续执行操作

              2xx:成功,操作被成功接收并处理

              3xx:重定向,需要进一步的操作以完成请求

              4xx:客户端错误,请求包含语法错误或无法完成请求

              5xx:服务器错误,服务器在处理请求的过程中发生了错误

  • 常见状态码:

       100 - 服务器仅接收到部分请求,但是一旦服务器并没有拒绝该请求,客户端应该继续发送其余的请求; 

        200 - 请求成功。一般用于GET与POST请求;

        302 - 重定向;

        404 - 服务器无法根据客户端的请求找到资源(网页);

        500 - 服务器内部错误,无法完成请求。

2、响应头

  • 响应头的格式:响应头名称:响应头的值
  • 常见的响应头:

        Content-Type:服务器告诉客户端本次响应体数据格式以及编码格式

        Content-disposition:服务器告诉客户端以什么格式打开响应体数据

3、响应空行

4、响应体:服务器发送给客户端的数据。


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值