<浅出> 每一个web开发都应该知道HTTP
做java web的,怎么能不熟悉http。可以说这是对web开发最重要的一条协议,面试的时候也难免会被问到这个问题,所以必须深刻了解这个协议。
首先我们要知道什么是协议,协议就是一系列的信息交换规则。只有完全符合规则,两个相互独立的系统才能交互。显然http也是这样的。
它中文叫做超文本传输协议,它是无状态的协议,它是属于七层结构里的最上层--应用层的协议,它的默认端口是80,它的目前版本是HTTP/1.1,它是本质上也是基于文本流的(当然有时候也会有一些Media类型的)。
URL是用来唯一确定网上资源的,它的格式如上图所示。
http中,分Client和Server,所以说HTTP是基于TCP的。一般来说是Client发起请求,Server相应。具体来说:一般是用于用户给浏览器发请求,然后浏览器将请求组成一个符合http协议的报文发送给服务器,服务器根据http规则来解析出请求报文,然后再将返回信息同样组织成http响应报文,发送给浏览器,最后浏览器呈现给用户。
上图是chrome-F12下可以看到的内容,先看request head,http的消息分为消息头,和消息体,一般消息体是空的。消息头包含都是一些元数据(不是用户相关的),比如编码信息等,在REST风格下,请求头比请求体重要。那么可以看到第一句就是"GET /yl0822/ HTTP/1.1",GET指的是请求方法:
① GET:这是最简单的http请求方法,点击连接的时候默认使用的就是GET,它就是让Server把请求的资源给客户端,并且不做任何修改,也就是说是只读的,所以对于资源操作来说,它是安全的。而且GET有很明显的一点就是query String会显示在url里面,这是非常不安全的,所以安全性要求不高的可以用GET。
② POST:用于你想要在服务器处理请求,它将请求数据写在消息体里面,所以是比较安全的。
③ DELETE、PUT:不做介绍,可以用POST代替,所以从来没用过。
/yl0822/是路由,指向请求目标,HTTP/1.1是协议版本。
Host是主机地址,实际上是IP地址,为方便记忆才用cnblogs、baidu、google啥的,没写端口是因为默认就是80。其他键值对都是客户端对请求的约束。
再看response,和请求不一样,对响应来说响应体是非常重要的,因为它就是你看到的网页,响应头中有两个要注意的,其一就是stateCode,各种状态码代表着什么意思,网上有很多了,这里就不赘述了。另外一个就是Content-Type,表示请求的返回类型,一般的有"text/html"、"text/plain"、"image/gif"、"image/jpeg"、"video/mpeg"等等。
An HTTP message consists of a message header and an optional message body, separated by a blank line。
未完待续
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。