• http协议知识结构图

  • 简介

  HTTP(HyperText Transfer Protocol),超文本传输协议,是Web应用的基本协议

  HTTP规定了客户端(浏览器)和服务器之间的通信步骤以及通信时所传输的数据的含义。最基本的模型是客户端向服务器发送一个请求,服务器收到请求后解析并处理请求,最后向客户端返回一个响应

  HTTP协议主要包括请求和响应两部分

  • http请求

  请求包含三部分内容:请求行、请求头和请求体

  常用请求方式有两种:get和post

  get请求的请求信息:

GET /test/register?name=dandan&birthday=2017-09-12 HTTP/1.1
Host: localhost:8080
Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64)...
Accept: text/html,application/xhtml+xml...
Referer: http://localhost:8080/test/register.html
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.8

  get请求时会把表单数据(请求参数)追加到请求路径后面,而不是放在请求体中。其中使用?连接请求路径和请求参数,使用=连接键和值,使用&连接键值对

  post请求的请求信息:

POST /test/register HTTP/1.1
Host: localhost:8080
Connection: keep-alive
Content-Length: 31
Cache-Control: max-age=0
Origin: http://localhost:8080
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64)...
Content-Type: application/x-www-form-urlencoded
Accept: text/html,application/xhtml+xml...
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.8 name=dandan&birthday=2017-09-12

  post请求时会把表单数据放在请求体中

请求行 GET /test/register?name=dandan&birthday=2017-09-12 HTTP/1.1

GET

请求方式

/test/register

请求路径

name=dandan&birthday=2017-09-12

查询字符串

HTTP/1.1

协议以及版本号

请求头 每个请求头都有特定含义

User-Agent

浏览器版本等信息

Referer

来源页面

Accept-Encoding

浏览器支持的压缩方式

请求体 只在post请求时请求体才可能有数据(请求头和请求体之间需要空一行)

name=dandan&birthday=2017-09-12

  注意使用HTTP协议传输文本数据时,全部请求信息不可包含非西文字符,比如中文字符,如果需要包含非西文字符,必须在传输数据前使用URL编码把非西文字符编码为西文字符,其实转换是由浏览器自动完成的

  •  http响应

  服务器需要为每个请求都生成一个响应,响应也包含三部分内容:状态行、响应头和响应体

  响应内容(响应并不分get或者post):

HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Accept-Ranges: bytes
ETag: W/"164-1505209589118"
Last-Modified: Tue, 12 Sep 2017 09:46:29 GMT
Content-Type: text/html;charset=UTF-8
Content-Length: 164
Date: Tue, 12 Sep 2017 09:47:12 GMT <!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
注册成功!
</body>
</html>

状态行 HTTP/1.1 200 OK

HTTP/1.1

协议和版本

200

状态码

OK

状态描述

常见状态码及其含义

200

请求处理成功

302

重定向,浏览器会重新访问Location响应头指定的路径

304

资源未修改,即告诉浏览器直接使用缓存数据

404

资源未找到

405

不支持GET或POST请求(没有重写HttpServlet的doGet()或doPost())

500

服务器错误(代码抛出异常)

响应头 每个响应头都有特定含义

Content-Type

响应体数据类型

Content-Length

响应体数据长度

响应体 响应体数据可能是一个页面文本、一张图片等(响应头和响应体之间需要空一行)

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
注册成功!
</body>
</html>

最新文章

  1. 动手实验iptables的NAT功能实现流量穿透
  2. VoLTE 注册流程
  3. Random number
  4. android基础学习之布局
  5. SQLSERVER一个比较不错的分页存储过程p_splitpage
  6. [Tool]利用Advanced Installer建立x86/x64在一起的安装程式
  7. Composite C1是一个.Net平台上开源专业的CMS开源项目
  8. 1、Web应用程序中的安全向量 -- XSS跨站脚本攻击
  9. java类中为什么设置set和get方法操作属性
  10. 说说JAVA之网络编程 - 爬虫
  11. es6 module + webpack
  12. 关于限制DHCP服务器广播的另类方法
  13. 阿里云linux下web服务器配置
  14. python转lua最容易掉进去的坑--作用域
  15. python 对excel操作用法详解
  16. 关于MySQL卸载重新安装的问题
  17. Matlab:非线性热传导(抛物方程)问题
  18. spring中的IOC/DI的知识点
  19. python常用代码片段
  20. #阿里云#云服务器部署可道云(KodExplorer)

热门文章

  1. ORACLE时间相关问题
  2. C#窗体与SQL数据库的连接
  3. UVA - 10285 Longest Run on a Snowboard(最长的滑雪路径)(dp---记忆化搜索)
  4. Sequence Models Week 3 Trigger word detection
  5. POJ 1094:Sorting It All Out拓扑排序之我在这里挖了一个大大的坑
  6. PHP 的变量类型,变量检测
  7. java正则 读取html 获取标题/超链接/链接文本/内容
  8. Java 创建对象的几种方式
  9. POJ 1141 经典DP 轨迹打印
  10. Mac OS 终端利器 iTerm2配置大全