您的位置:首页 > 理论基础 > 计算机网络

Http协议原理(一)

2015-07-15 22:00 393 查看
一、简介

超文本传输协议(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页面
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: