HTTP协议的理解

一、HTTP概述

HTTP,即超文本传输协议,规定了浏览器和万维服务器之间互相通信的规则。

特点:

  • 基于请求响应模式
  • 无状态的协议: 服务器不知道是谁在访问它,只认识一次请求。
    一次客户端请求,在响应结束后,服务器会自动断开链接。

URL:统一资源定位,就是一个网址: 协议名://域名:端口/路径 例如: http://127.0.0.1:8899/login/

二、请求协议

1、请求格式

请求首行:	请求方式,请求路径,
请求头信息:  键值对
空行:  用来与请求体分开
请求体:  get没有请求体,只有post才有

2、详细内容:浏览器写给服务器的内容,本质上是一组组键值对
F12 —— Network —— ALL —— Headers

请求头:

客户端告诉服务端说:
我能接收的文档类型:
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
我能接收的压缩格式:
Accept-Encoding: gzip, deflate, br
我能接收的语言:
Accept-Language: zh-CN,zh;q=0.9
Cache-Control: max-age=0
响应后,等3秒再断开,keep-alive默认是3秒。
Connection: keep-alive
二次登陆客户端携带的信息:
Cookie: uuid_tt_dd=6833774094542301993_20180923; smidV2=20180923170212d269561e45a71134e9f25383db836027008d5d5cc21b18010; UN=weixin_43173892; __yadk_uid=0RV3c3sxSuIt1WL6nHomsFoldkU4lyAz; dc_session_id=10_1537776417690.812442; Hm_lvt_6bcd52f51e9b3dce32bec4a3997715ac=1537710434,1537710469,1537710605,1537776330; UserName=weixin_43173892; UserInfo=AHK8oSBjcb2nmL2c9hNtzN4eUURfvKtPZcvAaGqyiQTX%2FNiMFtZRRJJV%2FACGzr93qPd2%2FWzmyecbhvGUSymYPQ%3D%3D; UserNick=weixin_43173892; AU=37D; BT=1537776429008; UserToken=AHK8oSBjcb2nmL2c9hNtzN4eUURfvKtPZcvAaGqyiQTX%2FNiMFtZRRJJV%2FACGzr93aNtjmLIu19dy2XyC8a02PSPvLSD5goLVyOjV9114YB4jISddRwU21peqngl0IhjB; TY_SESSION_ID=ca36c57d-4a51-41da-8a73-4d3a267e38c6; dc_tos=pfjw6m; Hm_lpvt_6bcd52f51e9b3dce32bec4a3997715ac=1537776815
域名:
Host: blog.csdn.net
Referer: https://www.csdn.net/
Upgrade-Insecure-Requests: 1
用户代理:客户端计算机的信息,操作系统,浏览器的信息。
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36

3、get请求

HTTP默认的请求方式是get

  • 没有请求体
  • 数据必须在1K之内
  • 请求数据会暴露在浏览器的地址栏中

get请求的常用操作:
1、在地址栏直接输入网址,一定是get请求
2、点击页面上的超链接一定是get请求
3、提交表单时,默认是get,但可以设置为post

4、post请求

  • 数据不会出现在地址栏中

  • 数据的大小没有上线

  • 有请求体

  • 请求体重如果存在中文,会使用URL编码

  • Referer 请求来自于哪个网站,用于统计数据用。

  • Content-Type 表单的数据类型

  • Content-Length:13 请求体的长度,这里表示13个字节

  • keyword=Hello 键值对,请求体内容,hello是在表单输入的数据,keyword是表单字段的名称

三、响应协议

1、响应头:

Connection: keep-alive
响应内容的格式:
Content-Encoding: gzip
响应内容的文档类型:
Content-Type: text/html; charset=UTF-8
时间:
Date: Mon, 24 Sep 2018 09:06:23 GMT
Keep-Alive: timeout=20
Server: openresty
Strict-Transport-Security: max-age= 31536000
Transfer-Encoding: chunked
Vary: Accept-Encoding
服务器版本信息
server
响应体使用utf-8编码
Content-Type  :HTML;charset=utf-8
响应给客户端的cookie
set-Cookie:
自动刷新响应头:
Refresh:3;URL=http:www.baidu.com

2、状态码:

  • 200:请求成功
  • 404:请求的资源没有找到
  • 500:请求的资源找到了,但服务器内部出现了错误
  • 302:重定向,表示服务器要求浏览器再发一个请求,服务器会发送一个响应头Location,它指定了新请求的URL地址。
  • 304:服务器会将缓存的最后时间比较,得出页面是否修改过。如果没有,则直接使用缓存的内容。

猜你喜欢

转载自blog.csdn.net/weixin_43173892/article/details/82830223