Http协议原理(一)

一、简介

超文本传输协议(HTTP,HyperText Transfer Protocol)是一种广为使用的网络协议,所有www文件必须遵守该标准。

在Web开发的时候,常用到http超文本传输协议来请求页面或者发送ajax数据,有时候特殊需要,要我们封装设置http头部等信息,所有很有必要学习和了解Http协议的原理。


二、请求格式和原理

请求格式如下:

  <request line>

<headers>

<空白行>

<request-body>

           在http请求中,第一行必须是请求行(request line),请求行用来说明请求类型(get,post等,注意http请求不仅仅是get和post请求)、访问资源路径以及http使用版本(现在都是用http1.1)。

           第二行是头部(headers),用来说明请求附加信息。

     接下来是空白行

          最后是请求主体(body),用来添加数据,如键值对(parameter),流等。

1.GET请求

       对于get请求,如www.baidu.com请求格式如下:

       

<span style="font-size:14px;">GET / HTTP/1.1

Host: www.baidu.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6)

Gecko/20050225 Firefox/1.0.1 

Connection: Keep-Alive</span></span>

     第一行是请求行,这里表示请求类型时GET,接下来斜杠 “/”表示请求根目录,HTTP/1.1表示使用的版本号为1.1。

     第二行是请求头部信息,Host指出请求目的地,结合请求行的斜杠,组合通知服务器请求的是www.baidu.com/(http1.0不需要使用Host)。第三行包含头部User-agent,是检测浏览器逻辑的重要部分,服务器和客户端脚本都可以访问它。该信息由浏览器定义,请在每个请求中自动发送。最后一行包含头部的连接,一般设为keep-alive。

   这里没有body部分,因为get请求不设置body部分。

   GET方式的url中键值对例如http://localhost:8080/bookstore/login?username=abc&password=123,就会写到请求行,如下所示:GET /login/?username=abc&password=123

2.POST请求

     POST为http添加附加信息,如表单使用post提交的时候,数据就会写入body中。

如下所下所示:

<span style="font-size:14px;">POST / HTTP/1.1

Host: www.wrox.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6)

Gecko/20050225 Firefox/1.0.1

Content-Type: application/x-www-form-urlencoded

Content-Length: 40

Connection: Keep-Alive

name=Professional%20Ajax&publisher=Wiley</span></span>


和GET请求类型类似,请求行改为POST,头部多了Content-Type说明请求内容如何编码,Content-Length表示请求主体Body中字节数。最后一行表示请求主体,键值对。


三、相应格式和原理

  如下所示,是http响应的格式:

  <status-line>

  <headers>

  <blank line>

 [ <reponse-body>]

 和请求类似,只是请求行改成状态行,用来说明服务器响应码,响应码有2xx,3xx,4xx,5xx,对应响应码之后介绍。

如下所示为相应格式:

HTTP/1.1 200 OK
Date: Fri, 22 May 2009 06:07:21 GMT
Content-Type: text/html; charset=UTF-8

<html>
<head></head>
<body>
<!--body goes here-->
</body>
</html>

第一行是http协议1.1 ,响应码为200,响应ok

        第二行为响应时间,响应mime类型和字符集编码

       响应内容为一段html页面

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值