HTTP协议学习之Request学习
在开始前,我们首先对HTTP协议做个简单的了解
HTTP协议(Hyper Text Transfer Protocol) 超文本传输协议
名词非常的高大上,如果学过计算机网络这门课(再如果还有一点印象...)会知道这是应用层的协议,应用层对应在OSI/ISO七层模型的最顶层,
是直接对接应用程序提供服务的,HTTP协议是TCP/IP的高级协议,默认端口是80,每个请求会对应一个响应
举个简单的例子那就是,我们在网上冲浪的时候就使用到了HTTP协议,那么HTTP到底定义了什么?
* 概念:
HTTP协议定义了浏览器与服务器之间通信时,发送数据的格式。这是一种约定,而我们今天讲的Request请求就是浏览器在向服务器端传送数据时需要遵守的格式
一个HTTP请求会包含三部分
1.请求行
2.请求头
3.请求体
下面我们逐个来说
请求行
请求行组成的格式是: 请求方式-URL-协议/版本
给出一个例子: GET /request/demo1 HTTP/1.1
HTTP1.1请求提供了七种请求方式,分别是GET、POST、HEAD、OPTIONS、PUT、DELETE以及Trace,我们这里着重说下用的比较多的两种 GET 和 POST
GET请求方式的特点是:
1.请求参数列表直接附加在URL后面,什么是请求参数列表呢?这个我们待会以例子来说
2.请求的url是有长度限制的
3.由于参数是直接附加在URL后面的,所以相对来说没那么安全
POST请求方式的特点是:
1.请求参数列表封装在请求体中
2.请求的url没有长度的限制
3.由于参数是封装在请求体中,相对来说会比较安全
GET请求方式多用于查询,就像我们平常在搜索引擎查询想要查询的信息的时候,就是属于GET请求方式
POST请求方式多用于提交信息,就像我们平常在页面输入账号密码登录一样,就是使用POST请求方式
请求头
*概念:客户端浏览器告诉服务器端一些信息,这里面的格式是以键值对形式出现的(请求头名称:请求头值),下面介绍几个请求头,
有兴趣的可以自行去查资料
1.User-Agent:浏览器告诉服务器,我访问你使用的浏览器版本信息
举个例子:
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:70.0) Gecko/20100101 Firefox/70.0
这其中涉及了一段浏览器大战的历史渊源,感兴趣的朋友自行去查资料。
这里我们注意一个就好了,Chrome和Firefox,没错这就是两个从谷歌浏览器和火狐浏览器访问同一个url得到的User-Agent,明确告诉了服务器我是属于那个浏览器
的,后面附带的自然就是浏览器版本号
2.Accpet: 告诉服务器,客户端可以处理的内容类型

3.Accpet-Encoding:告诉服务器端,客户端能够理解的内容编码方式,一般都是一些压缩的算法
4.Host:指明了服务器的域名,以及服务器监听的TCP端口,例如我们输入www.baidu.com,就是在访问百度的服务器
最后说一下请求体,(需要知道的是请求头与请求体之间存在一行请求空行,作用是分割请求头和请求体)
请求体也叫做请求正文,举个简单的例子来说
<form action="#">
用户名:<input type="text" name="username"> <br>
密码:<input type="password" name="password"><br> <input type="submit" value="登录"> </form>
上文讲到了请求参数列表,那它究竟是什么呢?从这个表单我们可以看出两个用户名和密码两个input标签里均有一个名为name的属性,注意看图
form表单默认的请求方式就是GET,所以我们会看到这username和password直接附加在url中了,此时username和password就是我们讲的请求参数列表,当然实际上会有很多,这里这是简单的举个”梨子“
所以请求行的格式就是:请求参1名称=请求参数1值&请求参数2名称=请求参数2值 .... 注意参数列表间使用 ‘&’ 做分隔符
最后给出一个完整的HTTP请求字符串表示形式
GET /web/login.html HTTP/1.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Connection: keep-alive
Cookie: Idea-2879242d=1fa6d102-fd6b-460f-8142-83f5d129d205; JSESSIONID=66D836411246ACA9410EF12C6BA75065
Host: localhost:63342
If-Modified-Since: Thu, 28 Nov 2019 03:59:44 GMT
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: same-origin
Sec-Fetch-User: ?1
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36 username=Amg997&password=123
至此,HTTP协议学习之Request学习就讲完了...
HTTP协议学习之Request学习的更多相关文章
- MQTT协议实现Eclipse Paho学习总结二
一.概述 前一篇博客(MQTT协议实现Eclipse Paho学习总结一) 写了一些MQTT协议相关的一些概述和其实现Eclipse Paho的报文类别,同时对心跳包进行了分析.这篇文章,在不涉及MQ ...
- MQTT协议实现Eclipse Paho学习总结
MQTT协议实现Eclipse Paho学习总结 摘自:https://www.cnblogs.com/yfliufei/p/4383852.html 2015-04-01 14:57 by 辣椒酱, ...
- JavaWeb 后端 <三> 之 Response Request 学习笔记
一.响应对象 Response(重点:HTTP协议响应部分) 查看
- #学习笔记#e2e学习使用(一)
本文仅限于记录本人学习的过程,以及怎么踩的坑,是如何解决的.逻辑肯定是混乱的,有用之处会抽出共通另行发帖. 最终目标:要运用于Vue项目中,进行功能测试甚至自动化测试. 一.e2e概念 理解:end ...
- 2019最新WEB前端开发小白必看的学习路线(附学习视频教程)
2019最新WEB前端开发小白必看的学习路线(附学习视频教程).web前端自学之路:史上最全web学习路线,HTML5是万维网的核心语言,标准通用标记语言下的一个应用超文本标记语言(HTML)的第五次 ...
- 20155234 2016-2017-2第十周《Java学习笔记》学习总结
20155234第十周<Java学习笔记>学习总结 教材学习内容总结 网络编程 在两个或两个以上的设备(例如计算机)之间传输数据.程序员所作的事情就是把数据发送到指定的位置,或者接收到指定 ...
- 20155234 2610-2017-2第九周《Java学习笔记》学习总结
20155234第九周<Java学习笔记>学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC(Ja ...
- Vue学习笔记-rest_framework_jwt 学习
一 使用环境 开发系统: windows 后端IDE: PyCharm 前端IDE: VSCode 数据库: msyql,navicat 编程语言: python3.7 (Windows x86- ...
- (转)Predictive learning vs. representation learning 预测学习 与 表示学习
Predictive learning vs. representation learning 预测学习 与 表示学习 When you take a machine learning class, ...
随机推荐
- Solr的原理及使用
1.Solr的简介Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口.用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引:也可以通过 ...
- lammps_data文件
一.notes: 1.不在data文件里写“#”(注释),否则,容易出错: 2.前两行不用写东西(建议): 3.相互作用系数可以不用写在data里边(如pair_coeff等),可有可无,but fo ...
- codeforce Round #605(Div.3)
A. Three Friends 题目链接 题目意思:有三个好朋友a,b,c.他们在一个坐标轴上,他们的位置分别是xa 和xb ,xc,他们三个人都可以往前或者往后走一步,只能走一步.问你他们走了(也 ...
- 【Spring】使用@Profile注解实现开发、测试和生产环境的配置和切换,看完这篇我彻底会了!!
写在前面 在实际的企业开发环境中,往往都会将环境分为:开发环境.测试环境和生产环境,而每个环境基本上都是互相隔离的,也就是说,开发环境.测试环境和生产环境是互不相通的.在以前的开发过程中,如果开发人员 ...
- SpringMVC中前端Form表单提交后跳转不过去的问题
今天晚上打算谢谢Spring整合这个内容,写的差不多之后运行 出现了各种问题 逐一排查 首先有一个(MyEclipse10) 一: class path resource [spring-mvc.xm ...
- Mysql 5.6创建新用户并授权指定数据库相应权限
一.环境 Centos 6.9 Mysql 5.6.40 二.步骤 1.使用root用户登陆mysql mysql -uroot -p 输入密码: 2.创建新用户 CREATE USER 'user' ...
- Java面试题(JVM篇)
JVM 194.说一下 jvm 的主要组成部分?及其作用? 类加载器(ClassLoader) 运行时数据区(Runtime Data Area) 执行引擎(Execution Engine) 本地库 ...
- Java面试题(Kafka篇+zookeeper 篇)
Kafka 152.kafka 可以脱离 zookeeper 单独使用吗?为什么? kafka 不能脱离 zookeeper 单独使用,因为 kafka 使用 zookeeper 管理和协调 kafk ...
- HP Probook 4230s 更换 CPU 过程
HP Probook 4230s 更换 CPU 过程 原来使用的 CPU 是 i5-2540M 更换为 i7-2760QM 1.松开 硬盘线 硬盘线插头上有一片黑色的胶片,可以用来拔起插头 硬盘 ...
- 写Seo网站标题应该注意什么
http://www.wocaoseo.com/thread-11-1-1.html 最近看了群里一些朋友讨论关于网站优化标题应该注意哪些?各种说法五花八门,好的seo优化标题是可以给网站带来不错的流 ...