10_HTTP协议_入门知识
【什么是HTTP协议】
对 浏览器客户端 和 服务器端之间的数据传输的格式规范。
客户端连上web服务器后,若想获得web服务器中的某个web资源,需遵循一定的通讯格式,HTTP协议用于定义客户端与web服务器通讯的格式。
HTTP(hypertest transfer protocol),超文本传输协议,它是TCP/IP协议的一个应用层协议,用于定义WEB浏览器和Web服务器之间交换数据的过程。
【查看http协议的工具】
* 火狐的firebug插件
* 谷歌的"审查元素"
* 使用系统自带的telnet工具(远程访问工具)
1. telnet localhost 8080 访问TomCat服务器
2. ctrl+] 回车 可以看回显
3. 输入请求内容
GET /MyWeb/hello.html HTTP/1.1 Host: localhost:8080
4. 回车,即可看到服务器响应的信息
请求内容无法在Talnet窗口显示的解决方法:
telnet localhost 8080,回车进入talnet窗口,在Telnet窗口中按下“Ctrl+]”;然后,输入“set localecho”命令,再连续按两次回车键,再输入HTTP请求即可见。
【HTTP请求】
HTTP请求:客户端连上服务器后,向服务器请求某个web资源,称之为客户端向服务器发送了一个HTTP请求。一个完整的HTTP请求包括如下内容:
一个请求行、若干请求头、实体内容。
[ 在tomcat服务器的webapp下新建如下web应用 ]

启动Tomcat服务器,在ie浏览器中输入:http://localhost:8080/myWeb/hello.html

【请求行】
[ 请求方式 ]
请求行中的GET称之为请求方式,请求方式有;
POST、GET、PUT、DELETE、HEAD、OPTIONS、TRACE
常用的请求方式:POST、GET
1.用户如没有设置,默认情况下浏览器向服务器发送的都是get请求,例如在浏览器直接输地址访问,点击超链接都是get。
2.用户如果想把请求方式改为POST,可以通过更改表单的提交方式实现。
[ POST 和 GET的区别 ]
不管POST还是GET,都用于向服务器请求某个WEB资源,这两种方式的区别主要表现在数据传输上:
* GET请求方式:可以在请求的URL地址后以?的形式带上交给服务器的数据,多个数据之间以&进行分割,
例如:GET /myWeb/hello.html?name=zhangsan&id=10086 HTTP/1.1
注意:GET请求,其URL地址后附带的参数是有限制的,其数据容量通常不能超过1K。
* POST请求方式:可以在请求的实体内容中向服务器发送数据
注意:传送的数据量无限制。(比如传输文件,使用POST请求来传输文件)
【消息头分析】
Accept: text/html,image/* --告诉服务端,客户端浏览器所接受的数据类型
Accept-Charset: ISO-8859-1 --告诉服务端,浏览器采用的数据编码格式
Accept-Encoding: gzip,compress --告诉服务端,浏览器接受的数据压缩格式
Accept-Language: en-us,zh- --告诉服务端,浏览器接受的语言
Host: www.7k7k.com:80 --请求发出的主机和端口(必须),通过这个头告诉服务器,想访问的主机和端口
If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT --浏览器缓存的最后修改时间
Referer: http://www.7k7k.com/index.jsp -- 当前请求来自于哪里 (防止非法链接),告诉服务器,它是从哪个资源来访问服务器
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0) --浏览器的类型
Cookie:name=eric ---浏览器保存的cookie数据
Connection: close/Keep-Alive ---浏览器和服务器的连接状态。close:关闭。keep-alive:保持连接
Date: Tue, 11 Jul 2000 18:23:51 GMT --请求发出的时间
【HTTP响应】
一个HTTP响应,代表服务器向客户端回送的数据,它包括:
一个状态行、若干响应头(消息头)、实体内容。
其中的一些消息头和实体内容都是可选的,消息头和实体内容之间要用空行隔开。

补充对应给的响应正文(即实体内容)

【HTTP响应--------状态行(响应行)】
[ 格式 ] HTTP版本号 状态码 原因叙述<CRLF>
[ 例子 ] HTTP/1.1 200 OK
[ 关于状态码 ]
状态码用于表示服务器对请求的处理结果,它是一个三位的十进制数。响应码分为5大类。

常见状态码:
200:请求处理完成,成功返回!
302:需要浏览器进一步请求,才能完成。
404:浏览器端的错误。没有找到资源。
500:服务器端的错误。
【HTTP响应---响应头】
Location: http://www.7k7k.com/index.jsp --重定向的地址。结合302状态使用完成重定向的效果,用于告诉客户找谁
Server:apache tomcat --服务器的类型
Content-Encoding: gzip --服务器发送给浏览器的数据压缩格式
Content-Length: 80 --服务器发送给浏览器的数据长度
Content-Language: zh-cn --服务器支持语言
Content-Type: text/html; charset=GB2312 --服务器发送给浏览器的 数据类型 和 数据编码格式
Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT --服务器资源的最后修改时间
Refresh: 1;url=http://www.it315.org --定时刷新或每隔n秒跳转资源,告诉浏览器多长时间刷新一次
Content-Disposition: attachment; filename=aaa.zip -- 服务器告诉给浏览器以下载方式打开资源
Transfer-Encoding: chunked
Set-Cookie:SS=Q0=5Lb_nQ; path=/search -- 服务器发送给浏览器的cookie数据
Expires: -1 --通知浏览器不使用缓存(-1或0,是不缓存)
Cache-Control: no-cache
Pragma: no-cache
Connection: close/Keep-Alive --连接状态
Date: Tue, 11 Jul 2000 18:23:51 GMT --响应发出的时间
10_HTTP协议_入门知识的更多相关文章
- Java web 入门知识 及HTTP协议详解
Java web 入门知识 及HTTP协议详解 WEB入门 WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源. Internet上供外界访问的Web资 ...
- Httpd服务入门知识-http协议版本,工作机制及http服务器应用扫盲篇
Httpd服务入门知识-http协议版本,工作机制及http服务器应用扫盲篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Internet与中国 Internet最早来源于美 ...
- zabbix入门知识
zabbix入门知识 zabbix中文手册 https://www.zabbix.com/documentation/3.4/manual/ 1.zabbix介绍 Zabbix 是一个企业级的分布式开 ...
- ElasticSearch入门知识扫盲
ElasticSearch 入门介绍 tags: 第三方 lucene [toc] 1. what Elastic Search(ES)是什么 全文检索和lucene 全文检索 优点:高效,准确,分词 ...
- ARP协议的基础知识
关于ARP协议的基础知识 1.ARP的工作原理 本来我不想在此重复那些遍地都是的关于ARP的基本常识,但是为了保持文章的完整性以及照顾初学者,我就再啰嗦一些文字吧,资深读者可以直接跳过此节 ...
- 浅谈TCP IP协议栈(一)入门知识【转】
说来惭愧,打算写关于网络方面的知识很久了,结果到今天才正式动笔,好了,废话不多说,写一些自己能看懂的入门知识,对自己来说是一种知识的总结,也希望能帮到一些想了解网络知识的童鞋. 万事开头难,然后中间难 ...
- zookeeper 入门知识
作为开启分布式架构的基石,除了必会还有的选么 自己的一些理解,有错误的话请一定要给予指正! 一.是什么? 分布式数据一致性的解决方案. 二.有什么用 数据的发布/订阅(配置中心) . 负载均衡(du ...
- Python基础入门知识
本节内容 Python介绍 发展史 Python 2 or 3? 安装 Hello World程序 变量 用户输入 模块初识 .pyc是个什么鬼? 数据类型初识 数据运算 表达式if ...else语 ...
- Web前端入门知识
第一阶段:理论知识 第一章:协议理解 第二阶段:了解知识 第二章:前端简介 第三阶段:入门知识 第三章:标签结构 第四章:常用标签 第四阶段:样式搭配 第五章:样式初见 第六章:属性选择 第七章:属性 ...
随机推荐
- AQTime教程(1)
AQTime教程 1 简介 AQTime和MemProof都是AutomatedQA旗下的产品,AQTime比MemProof提供了更丰富强大的功能.该产品含有完整的性能和调试工具集,能够收集程序运行 ...
- 代码自动生成工具MyGeneration之一(程序员必备工具)
代码自动生成工具MyGeneration之一(程序员必备工具) 转 分类: C#2008-08-06 18:12 16064人阅读 评论(12) 收藏 举报 工具数据库相关数据库stringbrows ...
- 解决SenTestingKit/SenTestingKit.h: No such file or directory
在一个iOS项目中引入了单元测试,感觉项目间的依赖关系有些乱,就建了一个新的Project,再把原来的.h和.m加进去,编译时竟然出现“SenTestingKit/SenTestingKit.h: N ...
- 网站WAF的检测
[wafw00f]: 项目地址: https://github.com/sandrogauci/wafw00f WAFW00F是识别和指纹Web应用防火墙(WAF)产品,其工作原理是首先通过发送一个正 ...
- Android设计模式系列-适配器模式
对于android开发者来说起,适配器模式简直太熟悉不过,有很多应用可以说是天天在直接或者间接的用到适配器模式,比如ListView.ListView用于显示列表数据,但是作为列表数据集合有很多形式, ...
- Android蓝牙操作笔记
蓝牙是一种支持设备短距离传输数据的无线技术.android在2.0以后提供了这方面的支持. 从查找蓝牙设备到能够相互通信要经过几个基本步骤(本机做为服务器): 1.设置权限 在manifest中配置 ...
- [Practical Git] Navigate git command pager output with Unix less commands
When using a git command that can have a large amount of output (like git log, git diff, or git blam ...
- android学习日记03--常用控件ListView
常用控件 8.ListView 列表视图,比如游戏的排行榜.列表数据可以根据屏幕大小自适应 列表的显示需要三个元素: a.ListVeiw:用来展示列表的View. b.适配器:用来把数据映射到Lis ...
- Linux PAM&&PAM后门
Linux PAM&&PAM后门 我是壮丁 · 2014/03/24 11:08 0x00 PAM简介 PAM (Pluggable Authentication Modules )是 ...
- eclipse @override错误
@Override是JDK5 就已经有了,但有个小小的Bug,就是不支持对接口的实现,认为这不是Override而JDK6 修正了这个Bug,无论是对父类的方法覆盖还是对接口的实现都可以加上@Over ...