网站建设推广专家服务,网站建设存在哪些问题,做企业营销网站,淄博网站建设设计报文#xff1a; 简单来说#xff0c;报文就是也就是HTTP报文#xff0c;作用是在各个系统之间进行和响应时用来交换与传输的数据单元#xff0c;即站点一次性要发送的数据块#xff0c;这些数据块以一些文本形式的元信息开头#xff0c;这些信息描述了报文的内容及含义 简单来说报文就是也就是HTTP报文作用是在各个系统之间进行和响应时用来交换与传输的数据单元即站点一次性要发送的数据块这些数据块以一些文本形式的元信息开头这些信息描述了报文的内容及含义报文包含了将要发送的完整的数据信息还需要遵守规定好的格式。 另外报文也是网络传输的单位传输过程中会不断的封装成分组、包、帧来传输封装的方式就是添加一些信息段那就是报文头以一定格式组织起来的数据。 HTTP的请求顺序 一次HTTP请求HTTP报文会从客户端传送到代理再传送到服务器再服务器工作完成之后报文又会从服务器传送到代理最后再次回到客户端。 HTTP请求报文和响应报文 HTTP报文是面向文本的所有的HTTP报文都可以分为两类请求报文和响应报文请求和响应报文的基本报文结构大致是相同的只有起始行的语法会有所不同。 一、HTTP请求报文 它会向Web服务器请求一个动作一个HTTP请求报文一般由请求行、请求头部、请求数据这么几个部分所组成如图 请求报文的格式 请求行 mehodrequest-URLversion 请求头部headers 请求数据entity-body 各部分的简要描述 1、method方式客户端希望服务器对资源执行的动作比如GET/POST/HEAD 2、请求URLrequest-URL要直接与服务器进行对话只要请求URL是资源的绝对路径就可以了服务器可以假定自己是URL的主机/端口 3、版本version报文所使用的HTTP版本其格式HTTP/主要版本号次要版本号 4、实体的主体部分entity-body实体的主体部分包含一个由任意数据组成的数据块并不是所有的报文都包含实体的主体部分有时报文只是以一个CRLF结束。 5、头部(header)可以有零个或多个头部每个首部都包含一个名字后面跟着一个冒号(:)然后是一个可选的空格接着是一个值最后是一个CRLF首部是由一个空行(CRLF)结束的表示了头部列表的结束和实体主体部分的开始 1请求行 请求行由请求方法字段、URL字段和HTTP协议版本字段三个字段组成它们用空格分隔例如GET/index.html HTTP/1.1HTTP协议的请求方法有GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT。 HEAD就像GET只不过服务端接收到HEAD请求后只返回响应头而不会发送响应内容当我们只需要查看某个页面的状态的时候使用HEAD是非常高效的因为在传输的过程中省去了页面内容。 下面来举个例子 Request URL:https://www.baidu.com/ Requset Method:GET Status Code:200 OK Remote Address:172.31.1.246:8080 2请求头部 请求头部由关键字/值对组成每行一对关键字和值用英文冒号“”分隔。头部和协议配合工作共同决定了客户端和服务器能做什么事情请求头部通知服务器有关客户端请求的信息头部主要分为了通用头部/请求头部/响应头部/实体首部。 通用头部既可以出现在请求报文中也可以出现在响应报文中它提供了与报文相关的最基本的信息 Connection允许客户端和服务器指定与请求/响应连接有关的选项 Date提供日期和时间标志说明报文是什么时间创建的 MIME-Version给出了发送端使用的MIME版本 Trailer如果报文采用了分块传输编码方式就可以用这个首部列出位于报文拖挂部分的首部集合 Transfer-Encoding告知接收端为了保证报文的可靠传输对报文采用了什么编码方式 Update给出了发送端可能想要“升级”使用的新版本或协议 Via显示了报文经过的中间节点(代理、网关) Cache-Control用于随报文传送缓存指示 请求头部请求头部是只在请求报文中有意义的头部。用于说明是谁或什么在发送请求、请求源自何处或者客户端的喜好及能力。 Client-IP提供了运行客户端的机器的IP地址 From提供了客户端用户的E-mail地址 Host给出了接收请求的服务器的主机名和端口号 Referer提供了包含当前请求URI的文档的URL UA-Color提供了与客户端显示器的显示颜色有关的信息 UA-CPU给出了客户端CPU的类型或制造商 UA-OS给出了运行在客户端机器上的操作系统名称及版本 UA-Pixels提供了客户端显示器的像素信息 User-Agent将发起请求的应用程序名称告知服务器 Accept告诉服务器能够发送哪些媒体类型 Accept-Charset告诉服务器能够发送哪些字符集 Accept-Encoding告诉服务器能够发送哪些编码方式 Accept-Language告诉服务器能够发送哪些语言 TE告诉服务器可以使用那些扩展传输编码 Expect允许客户端列出某请求所要求的服务器行为 Range如果服务器支持范围请求就请求资源的指定范围 If-Match如果实体标记与文档当前的实体标记相匹配就获取这份文档 If-Modified-Sinec除非在某个指定的日期之后资源被修改过否则就限制这个请求 If-None-Match如果提供的实体标记与当前文档的实体标记不相符就获取文档 If-Range允许对文档的某个范围进行条件请求 If-Unmodified-Since除非在某个指定日期之后资源没有被修改过否则就限制这个请求 Authorization包含了客户端提供给服务器以便对其自身进行认证的数据 Cookie客户端用它向服务器传送数据 Cookie2用来说明请求端支持的cookie版本 Max-Forward在通往源端服务器的路径上将请求转发给其他代理或网关的最大次数 Proxy-Authorization这个首部在与代理进行认证时使用的 Proxy-Connection这个首部是在与代理建立连接时使用的 响应头部响应头部为客户端提供了一些额外信息比如谁在发送响应、响应者的功能甚至与响应相关的一些特殊指令 Age(从最初创建开始)响应持续时间 Public服务器为其资源支持的请求方法列表 Retry-After如果资源不可用的话在此日期或时间重试 Server服务器应用程序软件的名称和版本 Title对HTML文档来说就是HTML文档的源端给出的标题 Warning比原因短语更详细一些的警告报文 Accept-Ranges对此资源来说服务器可接受的范围类型 Vary服务器会根据这些首部的内容挑选出最适合的资源版本发送给客户端 Proxy-Authenticate来自代理的对客户端的质询列表 Set-Cookie在客户端设置数据以便服务器对客户端进行标识 Set-Cookie2与Set-Cookie类似 WWW-Authenticate来自服务器的对客户端的质询列表 实体首部描述主体的长度和内容或者资源自身 Allow列出了可以对此实体执行的请求方法 Location告知客户端实体实际上位于何处用于将接收端定向到资源的位置(URL)上去 Content-Base解析主体中的相对URL时使用的基础URL Content-Encoding对主体执行的任意编码方式 Content-Language理解主体时最适宜使用的自然语言 Content-Length主体的长度 Content-Location资源实际所处的位置 Content-MD5主体的MD5校验和 Content-Range在整个资源中此实体表示的字节范围 Content-Type这个主体的对象类型 ETag与此实体相关的实体标记 Expires实体不再有效要从原始的源端再次获取实体的日期和时间 Last-Modified这个实体最后一次被修改的日期和时间 扩展首部规范中没有定义的新首部开发者可以自定义一个首部的值/对 3请求的数据 请求数据不在GET方法中使用而是在POST方法中使用POST方法适用于需要客户填写表单的场合与请求数据相关的最常使用的请求头是Content-Type和Content-Length。 二、HTTP响应报文 它会将请求的结果返回给客户端这里也是由三部分组成状态行、消息报头、响应正文。 响应报文的格式 状态行 version status reason-phrase 消息头部headers 响应正文entity-body 正如你所见在响应中唯一真正的区别在于第一行中用状态信息代替了请求信息。 各部分的简要描述 1、状态码(status-code)状态码是三位数字描述了请求过程中所发生的情况。每个状态码的第一位数字都用于描述状态的一般类别(比如“成功”、“出错”等等) 2、原因短语(reason-phrase)数字状态码的可读版本包含行终止序列之前的所有文本。原因短语只对人类有意义因此尽管响应行HTTP/1.0 200 NOT OK和HTTP/1.0 200 OK中原因短语的含义不同但同样都会被当作成功指示处理 状态行的格式如下 HTTP-Version Status-Code Reason-Phrase CRLF 其中HTTP-Version表示服务器HTTP协议的版本Status-Code表示服务器发回的响应状态代码Reason-Phrase表示状态代码的文本描述。状态代码由三位数字组成第一个数字定义了响应的类别且有五种可能取值。 1xx指示信息--表示请求已接收继续处理。 2xx成功--表示请求已被成功接收、理解、接受。 3xx重定向--要完成请求必须进行更进一步的操作。 4xx客户端错误--请求有语法错误或请求无法实现。 5xx服务器端错误--服务器未能实现合法的请求。 常见状态代码、状态描述的说明如下 200 OK客户端请求成功。 400 Bad Request客户端请求有语法错误不能被服务器所理解。 401 Unauthorized请求未经授权这个状态代码必须和WWW-Authenticate报头域一起使用。 403 Forbidden服务器收到请求但是拒绝提供服务。 404 Not Found请求资源不存在举个例子输入了错误的URL。 500 Internal Server Error服务器发生不可预期的错误。 503 Server Unavailable服务器当前不能处理客户端的请求一段时间后可能恢复正常举个例子HTTP/1.1 200 OKCRLF。 下面我们来说一下在传输中常见的HTTP方法 1 GET方法通常用于请求服务器发送某个资源。不包含主体 HEAD方法与GET方法类似但服务器在响应中只返回首部使用HEAD方法可以在不获取资源的情况下了解资源的情况(比如判断其类型)通过查看响应中的状态码看看某个对象是否存在通过查看首部测试资源是否被修改了不包含主体 2 POST方法该方法是用来向服务器发送数据的常用于HTML表单包含主体 3 PUT方法该方法的语义就是让服务器用请求的主体部分来创建一个由所请求的URL命名的新文档如果那个URL已经存在的话就用这个主体来替代它。包含主体 4 TRACE方法主要用于验证请求是否如愿穿过了请求/响应链不包含主体 5 OPTIONS方法决定可以在服务器上执行那些方法不包含主体 6 DELETE方法该方法就是请服务器删除请求URL所指定的资源但是客户端应用程序无法保证删除操作一定会被执行因为HTTP规范允许服务器在不通知客户端的情况下撤销请求不包含主体 7 扩展方法指的是没有在HTTP/1.1规范中定义的方法这些方法为开发者提供了一种扩展这些HTTP服务能力的手段。 就这些方法之上最后我们再说一下关于HTTP请求中GET与POST的区别 1 数据传输方法不同 GET提交请求的数据会附在URL之后 以?分割URL和传输数据多个参数用连接;例如login.action?namehyddd passwordidontknowverify%E4%BD%A0 %E5%A5%BD。如果数据是英文字母/数字原样发送如果是空格转换为如果是中文/其他字符则直接把字符串用BASE64加密得出如 %E4%BD%A0%E5%A5%BD其中XX中的XX为该符号以16进制表示的ASCII。 POST提交把提交的数据放置在是HTTP包的包体request-body中。 因此GET提交的数据会在地址栏中显示出来而POST提交地址栏不会改变。 2 传输数据的大小 首先声明,HTTP协议没有对传输的数据大小进行限制HTTP协议规范也没有对URL长度进行限制。 而在实际开发中存在的限制主要有 GET:特定浏览器和服务器对URL长度有限制 因此对于GET提交时传输数据就会受到URL长度的限制。 POST:由于不是通过URL传值理论上数据不受限。但实际各个WEB服务器会规定对post提交数据大小进行限制Apache、IIS6都有各自的配置。 3 安全性 POST的安全性相比来说要比GET的安全性高注意只是相比来说主要因为GET提交的数据明文出现在URL上所以安全性低。转载于:https://www.cnblogs.com/-Bloom/p/10263451.html