HTTP协议

目录

HTTP协议

请求消息的数据格式---Request

响应消息的数据格式---Response

URL与URI的区别

GET请求与POST请求的区别?

HTTP协议

请求消息的数据格式---Request

数据格式:分为4部分

1.请求行

格式:
请求方式(类型) /请求url(请求资源的路径) 请求协议的版本 他们用空格隔开
GET /login.html HTTP/1.1
​
特点:
行和头之间没有任何分隔,请求行下面就连着请求头
​
请求方式:
1.HTTP协议有8种请求方式,常用的有两种
get:
1.请求参数在请求行中,url后
2.请求的url有长度限制
3.不安全,信息都在url后
​
2.post:
1.请求参数在请求体中
2.请求的url长度没有限制 
3.相对安全,信息在请求体中
文件的上传只能用post方式,文件大,超出了get请求的url限制

2.请求头

(告诉服务器浏览器的一些信息)一些键值对,每行一对,浏览器与Web服务器之间都可以发送,服务器和客户端的功能和标识

请求头名称:请求值
多个值用,分隔开
​
常见的请求头
​
Host:请求主机的地址
1.User-Agent:浏览器告诉服务器,我访问你使用的浏览器版本信息,可以在服务器端获取该头的信息,用来解决浏览器的兼容性问题
2.Accept:告诉服务器,浏览器可以接收什么样响应信息(MIME)的文件格式。Servlet可以根据它判断并返回适当的文件格式
3.Accept-Language:浏览器可以支持的语言环境
4.Accept-Encoding:可以接收的压缩格式
5.Referer:
Referer: http://localhost:8080/login.html
  告诉服务器(当前请求)从哪里来?如果是直接访问就是为空。
    1.防盗链:
    2.统计工作:
6.Connection:一直活着的。表示连接可以被复用,用来告诉服务器是否可以维持固定的HTTP连接。http是无连接的,HTTP/1.1使用Keep-Alive为默认值,这样当浏览器需要多个文件时(比如一个HTML文件和相关的图形文件),不需要每次都建立连接
Connection: keep-alive
Upgrade-Insecure-Requests: 1是升级的信息
7.Cookie:浏览器用这个属性向服务器发送Cookie。Cookie是在浏览器中寄存的小型数据体,他可以记载和服务器相关的用户信息,也可以用来实现会话功能
8.Content-Type:用来表明request的内容类型,可以用HttpServletRequest的getContentType()方法取得
9.Accept-Charset:指出浏览器可以接受的字符编码。英文浏览器默认是ISO_8859-1.
10.Accept-Encoding:指出浏览器可以接受的编码方式。编码方式不同于文件格式,他是为了压缩文件并加速文件传递速度,浏览器在接受到Web相应之后先解码,然后再检查文件格式。

1.防盗链:

2.统计工作:

3.请求空行

空行:分隔作用,分隔post请求头和请求体,最后一个请求头标之后是空行,发送回车和换行,通知服务器以下不在有头标

4.请求体(正文)

封装post请求消息的请求参数,是要发送的数据

get方式没有请求体
post就会出现请求体,最常用就是Content-Type和Content-Length头标

响应消息的数据格式---Response

数据格式:分为4部分

1.响应行

响应行:HTTP/1.1 200 OK

组成:协议/版本 响应状态码 响应状态码描述(OK表示成功)各元素之间用空格分隔

响应状态码:描述一个状态的,服务器告诉客户端浏览器本次请求和响应的一个状态

1.状态码都是三位数字

2.分类:五类,每一类都有很多,但是代表的含义是相似的

1xx:服务器接收客户端消息,没有接收完成,等待一段时间后发送1xx状态码,询问客户端还要不要发消息,请求收到,继续处理

2xx:表示成功。代表:200:存在文件

3xx:重定向。代表:302(重定向),资源跳转的方式。敲一次回车访问两次资源。304(访问缓存)[例如访问图片的时候,浏览器会缓存],3xx:均可能存在

4xx:客户端错误,代表:404:不存在文件或文件夹,或403:存在文件夹

5xx:服务器错误,代表:500:均可能存在,服务器内部异常

2.响应头

包含服务器类型,日期,长度,内容类型等

像请求头一样,他们指出服务器的功能,标识出响应数据的细节

格式:头名称:值

常见的相应头:

1.Content-Type: text/html;charset=UTF-8

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

text:表示文本内容

html:表示html格式

charset:编码格式。浏览器会根据反馈的内容改变当前页面的字符集

2.Content-Length:字节个数

3.Date:日期

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

    in-line:默认值在当前页面内打开
  attchment;filename=xxx:以附件的形式打开响应体。文件下载

3.响应空行

响应头和响应体之间用空行隔开

4.响应体

传输的数据,页面展示信息的内容,即HTML代码

URL与URI的区别

什么是URI? 统一资源标识符。代表网络中某个资源的名字。但是通过URI是无法定位资源的。

什么是URL?统一资源定位符。代表网络中某个资源,同时,通过URL是可以定位到该资源的。

URI和URL什么关系,有什么区别?

  1. URL包括URI

  2. http://localhost:8080/index.html 这是URL。

  3. /index.html 这是URI。

GET请求与POST请求的区别?

  1. get请求发送数据的时候,数据会挂在URI的后面,并且在URI后面添加一个“?”,"?"后面是数据。这样会导致发送的数据回显在浏览器的地址栏上。(get请求在“请求行”上发送数据)

    1. http://localhost:8080/getSetvlet?key1=value1&key2=value2

  2. post请求发送数据的时候,在请求体当中发送。不会回显到浏览器的地址栏上。也就是说post发送的数据,在浏览器地址栏上看不到。(post在“请求体”当中发送数据)

  3. get请求只能发送普通的字符串。并且发送的字符串长度有限制,不同的浏览器限制不同。这个没有明确的规范。

  4. get请求无法发送大数据量。

  5. post请求可以发送任何类型的数据,包括普通字符串,流媒体等信息:视频、声音、图片。

  6. post请求可以发送大数据量,理论上没有长度限制。

  7. get请求比较适合从服务器端获取数据。 post请求比较适合向服务器端传送数据。

  8. get请求支持缓存。

    1. 任何一个get请求最终的“响应结果”都会被浏览器缓存起来
    2. 只要发送get请求,浏览器做的第一件事都是先从本地浏览器缓存中找,找不到的时候才会去服务器上获取。

    3. 一个get请求的路径 对应 一个资源。

    4. 如果不希望get请求进行缓存。则只需要更换不同的URL即可,一般来说是使用时间戳来进行URL的生成(在URL后面来添加),这样浏览器每次都回去服务器拿最新的资源。

  9. post请求不支持缓存。(POST是用来修改服务器端的资源的。)

  10. post请求之后,服务器“响应的结果”不会被浏览器缓存起来。因为这个缓存没有意义。

  11. 不管你是get请求还是post请求,发送的请求数据格式是完全相同的,只不过位置不同,格式都是统一的: name=value&name=value

    1. name是什么?以form表单为例:form表单中input标签的name。

    2. value是什么?以form表单为例:form表单中input标签的value。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值