HTTP协议学习笔记----HTTP请求响应

来源:互联网 发布:同床异梦的人工智能 编辑:程序博客网 时间:2024/06/01 10:27
一、概述:
协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规则,HTTP(超文本传输协议)是一种通信协议,它允许将超文本标记语言(HTML)文档从web服务器传送到客户端的浏览器上。
HTTP协议的主要特点可概括如下:
1、支持客户/浏览器模式
2、简单快速: 客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET HEAD POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
3、灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
4、无连接:无连接的含义是每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

5、无状态:HTTP协议是无状态协议。同一个客户端的这次请求和上次请求时没有对应关系的,对http服务器来说,他并不知道这两个请求来自同一个客户端。为了解决这个问题,Web程序引入了Cookie机制来维护状态。(Cookie以后会总结)

二、URL
常见URL格式:  http://host[:port]/path/
host指的是服务器的ip地址或者域名
port是端口  HTTP 服务器的默认端口是80,这种情况下端口可以省略。如果使用了别的端口,必须指明,例如http://221.208.198.214:9090/SHIPINENWeb
path指访问资源的路径。
当然了 我们也见过后面带参数的:http://blog.csdn.net/caohaicheng?viewmode=contents

三、HTTP请求
http请求由三部分组成,分别是:请求行、消息报头、请求正文


请求行以一个请求方法符号开头,以空格分开 后面跟着请求的URI和协议的版本  例如:
GET /passApi/js/uni_login_wrapper.jsp?cdnversion=1384924152635 HTTP/1.1。


请求方法:
Http协议有8种请求方法
http协议定义了很多与服务器进行交互的方法,最基本的有四种,分别是GET,POST,PUT,DELETE.一个URL地址用于描述一个网络上的资源,而HTTP中的GET POST  PUT  DELETE  就对应着对这个资源的查,改,增,删4个操作。我们最常见的就是GET 和 POST了。GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。我们看看GET与POST的区别
A、GET 提交的数据会放在URL之后,以?分割URL和传输的数据,参数之间以&相连。POST方法提交的数据是放在HTTP包的Body中。
B、GET提交的数据大小有限制(因为浏览器对URL的长度有限制大约在2kb),而POST提交的数据没有限制。
C、GET提交的 数据会带来安全问题,不用解释了。
至于其他的http请求方法暂时我还不怎么用,等用到了再说。

常用请求报头(熟悉下就行,用的多了自然记住):
1、Accept: 浏览器可接受的资源类型  例如:Accept:image/gif   代表客户端可接受gif格式的图片资源   Accept:text/html 代表客户端可接受html超文本语言
2、Accept-Charset 浏览器可接受的字符集
3、Accept-Encoding:浏览器能够进行解码的数据编码方式,比如gzip。
4、Accept-Language:浏览器所希望的语言种类,当服务器能够提供多种语言版本时候用到
5、Authorization:授权信息,通常出现在对服务器发送的WWW-Authenticate头的应答中。
6、Connection:表示是否需要持久连接。如果值为”Keep-Alive“,或者HTTP版本号问1.1(HTTP1.1默认进行持久连接,1.0就不是),表示为持久连接,这样当页面包含有多个元素时(例如多个图片等),就能显著的减少下载所需要的 时间。
7、Content-Length:表示请求消息正文的长度。
8、Cookie:这是最重要的请求头信息之一

9、From:请求发送者的email地址,由一些特殊的Web客户程序使用,浏览器不会用到它。

10、Host: 初始URL中的主机和端口
11、Referer:包含一个URL,用户从该URL代表的页面出发访问当前请求的页面。

12、User-Agent:我们上网登陆论坛的时候,往往会看到一些欢迎信息,其中列出了你的操作系统的名称和版本,你所使用的浏览器的名称和版本,这往往让很多人感到很神奇,实际上,服务器应用程序就是从User-Agent这个请求报头域中获取到这些信息。User-Agent请求报头域允许客户端将它的操作系统、浏览器和其它属性告诉服务器。不过,这个报头域不是必需的,如果我们自己编写一个浏览器,不使用User-Agent请求报头域,那么服务器端就无法得知我们的信息了。

看下面这个Wireshark软件使用中的一个截图(包含了请求头与响应头)



请求正文:略。

四、HTTP响应
在接收请求消息后,服务器会返回一个HTTP响应消息。
http响应也分为三部分:响应行  消息报头  响应正文。


状态行格式如下:
HTTP-Version Status-Code Reason-Phrase CRLF
其中,HTTP-Version表示服务器HTTP协议的版本;Status-Code表示服务器发回的响应状态代码;Reason-Phrase表示状态代码的文本描述   例如: HTTP/1.1 200 OK


状态代码有三位数字组成,第一个数字定义了响应的类别,且有五中可能的取值:
1xx:指示信息--表示请求已接收,继续处理
2xx:成功--表示请求已被成功接收。
3xx:重定向--要完成请求必须进行更进一步的操作
4xx:客户端错误--请求有语法错误或者请求无法实现
5xx:服务器端错误--服务器未能实现合法的请求

常见的状态码

状态描述

说明

100

 

客户必须继续发出请求

200

OK

客户端请求成功

302

Found

重定向,新的url会在response中的Location中返回,服务器会使用新的url发出新的Request

304

Not Modified

代表上次的文档已经被缓存了,可以继续使用。

400

Bad Request

客户端请求语法错误,不能被服务器所理解

401

 

未授权

403

 

禁止访问

404

Not Found

请求的资源不存在(输入了错误的url)

500

Internal Server Error

服务器发生了不可预期的错误

502

 

网关错误

503

Server Unavailable

服务器当前不能处理客户端的请求,一段时间后可恢复


响应头:参考请求头介绍下面的那张图

响应正文:就是服务器返回资源的内容。

原创粉丝点击