用户访问浏网站-http协议

用户访问网站-http协议

用户访问网站时在浏览器输入网址,首先会发起DNS请求,通过域名服务器解析获得网站IP地址;获取地址之后,将会与站点服务器建立TCP连接,连接完成之后,用户即客户端发送http请求包,服务器返回查询结果。

一、http请求包

http请求包由三部分组成:请求行、请求消息报头、请求正文。

1.请求行

请求行的基本格式:

Method Request-URL HTTP-Version CRLF

其中,Method 表示请求方法: Request-URI是一个统-资源标识符;HTTP-Version表示请求的HTTP协议版不:;CRLF表示回车和换行(除了作为结尾的CRLF外,不允许出现单独的CR或LF字符)

请求方法用来告知web服务器本次请求的主要目的。
主要使用GET和POST两种方式开展请求。GET和POST在使用中的主要区别为:
●GET方法通过在浏览 器的地址栏中输人网址访问网页时,浏览器采用GET方法向服务器获取资源,对应的请求行示例为: GET /formm html HTTP/1.1 (CRLF)。
●POST方法要求被请求服务器接收附在请求后面的数据,常用于提交表单。

GET和POST方法的最大区别就是提交参数在HTTP请求包的位置不同。也就是说,使用GET方式时Requestbody部分为空,POST方式则可利用URL及Request body发送请求。
但在实际应用中,两者的安全性基本-致,都可能因链路劫持而出现参数泄漏的情况。链路劫持是由HTTP协议本身的特点所决定的,与请求方法没有任何关系。

2.请求消息报头

请求报头中涉及安全的内容主要有以下几项:
Host (必须存在): Host 主要用于指定被请求资源的 Internet 主机和端口号,即标识请求目标。其来源为当前访问的 URL 。缺省端口号为80,若指定了端口号(以8000为例),则请求目标变成 Host :www.a.com:8000。
Content—Length:标识当前请求包中的内容长度。
Origin :用来标识本次请求的发起源,只适用于 POST 方式。
Referer :用来标识当前请求的发起页商。
Accept : Accept 用于指定客户端接收哪些类型的信息。
Accept—Encoding:告知服务器端当前客户端可接受的内容编码。
Accept—Language:告知服务器端支持的语言类型。
User-Agent : User-Agent 通常简称为 UA ,其中包含当前用户的操作系统、浏览器的基本信息,用于告知 Web 服务器当前访问者的情况。此报头域不是必需存在的。但如果客户端不使用User—Agent请求报头域,那么服务器端就无法得知客户端的基本信息。目前 UA也经常被web服务器用于统计当前用户状态及行为。

3.请求正文

请求正文中包含HTTP传输的信息。当请求方法为GET时,请求正文为空,所有内容通过在URL后面添加参数进行传输。只有请求方法为POST时,HTTP 请求正文中才有信息信息,通常为Web系统自定义的参数,用于实现与服务端的交互。
其中的参数是由Web系统自行定义的。在Web系统开发时一般会根据参数用途指定特定的名称,如username、code等。

二、http响应包

服务器端接收到用户的请求包后,会根据其中的请求内容进行处理,并返回HTTP响应消息。HTTP响应包与请求包的结构类似,也是由三个部分组成,分别是响应行、响应消息报头、响应正文。

1.响应行

响应行的基本格式:

:HTTP-Version Status-Code Reason- Phrase CRLF

其中,HTTP-Version 表示服务器HTTP协议的版本;
Status-Code 表示服务器发回的响应状态代码; Reason-Phrase表示状态代码的文本描述。
如 “HTTP/1.1 200 OK”说明服务器HTTP版本为1.1,已接收到用户请求并返回状态码“200, OK”,表示当前请求正常。

服务器状态码:
服务器状态码用来告知客户端Web服务对本次的请求响应状态是什么。状态码由三位数学维成,其中第一个数字定义了响应的类别,且有五种可能取值:
●1Xx表示提示息,说明请求已被成功接收,继续处理。
●2XX 表示成功,说明请求已被成功接收、理解、接受。
●3XX表示重定向,要完成请求必须进行更进步处理了
●4XX表示客户端错误,请求有语法错误或请求无法实现。
●5XX表示服务器端错误,服务器处理请求时出错。
之后两位会利用不同的数字来代表当前服务的状态。以下是常见状态代码及状态描述:
●200: OK,客户端请求成功。
●301: Permanently Moved,页面重定向。
●203: TemporarilyMoved ,页面临时重定向。
●400:BadRequest,客户端请求有语法错误,不能被服务器所理解。
●401: Unauthorized, 请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
●403:Forbidden,服务器收到请求,但是拒绝提供服务
●404:NotFound,请求资源不存在,或者请求无法实现。
●500: Internal Server Error,服务器发生不可预期的错误。
●503:ServerUnavailable,服务器当前不能处理客户端的请求,一段时间后可能恢复正常。

2.响应消息报头

响应消息报头允许服务器传递不能放在响应行中的附加响应信息,以及关于服务器的信息和对Request-URI所标识的资源进行下一步访问的信息。
常用的响应消息报头有以下内容:
●Server Server响应报头域包含服务器用来处理请求的软件信息。
●X-Powered-By用来标识实现当前Web站点所采用的语言及版本号。
●Set-cookie根据当前业务流程生成Cookie,并提供给客户端。
●Content-Length与请求包中的用法相同,用以标识当前响应包中的内容长度。

3.响应正文

相对于请求包中的正文内容,响应包中的内容会携带当前页面的源码。客户端浏览器可根据响应包中的源码显示出完整的页面。从安全角度来说,对于响应包中的正文内容,直接观看浏览器会直观、方便得多。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值