请求Http协议

http://hao123.com  时间:2021-03-01  阅读:()

Http协议

精品好文档推荐学习交流

Http协议

Archive for the'Http协议'Category AJAX快速入门之HTTP协议基础Tuesday,September 26th,2006

要很好地领会Ajax技术的关键是了解超文本传输协议(HTTP) 该协议用来传输网页、 图像以及因特网上在浏览器与服务器间传输的其他类型文件。只要你在浏览器上输入一个URL最前面的就表示使用HTTP来访问指定位置的信息。 (大部分浏览器还支持其他一些不同的协议其中FTP就是一个典型例子。 )

注意本文中只涉及HTTP协议这是Ajax开发人员关心的方面它可作为HTTP的参考手册或指南。

HTTP由两部分组成请求和响应。当你在Web浏览器中输入一个URL时浏览器将根据你的要求创建并发送请求该请求包含所输入的URL以及一些与浏览器本身相关的信息。当服务器收到这个请求时将返回一个响应该响应包括与该请求相关的信息以及位于指定URL(如果有的话)的数据。直到浏览器解析该响应并显示出网页(或其他资源)为止。

HTTP请求

HTTP请求的格式如下所示

<request-line><headers><blank line>[<request-body>]

在HTTP请求中第一行必须是一个请求行(request line) 用来说明请求类型、要访问的资源以及使用的HTTP版本。紧接着是一个首部(header)小节用来说明服务器要使用的附加信息。在首部之后是一个空行再此之后可以添加任意的其他数据[称之为主体(body) ] 。

仅供学习与交流如有侵权请联系网站删除谢谢2

精品好文档推荐学习交流

在HTTP中定义了大量的请求类型不过Ajax开发人员关心的只有GET请求和POST请求。只要在Web浏览器上输入一个URL浏览器就将基于该URL向服务器发送一个GET请求 以告诉服务器获取并返回什么资源。对于www.wrox.c om的GET请求如下所示

GET/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 Connection Keep-Alive

请求行的第一部分说明了该请求是GET请求。该行的第二部分是一个斜杠(/) 用来说明请求的是该域名的根目录。该行的最后一部分说明使用的是HTTP 1. 1版本(另一个可选项是1.0) 。那么请求发到哪里去呢?这就是第二行的内容。

第2行是请求的第一个首部 HOST。首部HOST将指出请求的目的地。结合HOST和上一行中的斜杠(/) 可以通知服务器请求的是www.wrox.com/(HTTP 1. 1才需要使用首部HOST而原来的1.0版本则不需要使用) 。第三行中包含的是首部User-Agent服务器端和客户端脚本都能够访问它它是浏览器类型检测逻辑的重要基础。该信息由你使用的浏览器来定义(在本例中是Firefox 1.0. 1) 并且在每个请求中将自动发送。最后一行是首部Connection通常将浏览器操作设置为Keep-Alive(当然也可以设置为其他值但这已经超出了本书讨论的范围) 。注意在最后一个首部之后有一个空行。即使不存在请求主体这个空行也是必需的。

如果要获取一个诸如的www.wr o x.c om域内的页面那么该请求可能类似于

仅供学习与交流如有侵权请联系网站删除谢谢3

精品好文档推荐学习交流

GET/books/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 Connection Keep-Alive

注意只有第一行的内容发生了变化它只包含URL中www.wrox.c om后面的部分。

要发送GET请求的参数则必须将这些额外的信息附在URL本身的后面。其格式类似于

URL?name1=value1&name2=value2&.&nameN=valueN

该信息称之为查询字符串(query string) 它将会复制在HTTP请求的请求行中如下所示

GET/books/?name=Professional%20Ajax HTTP/1. 1 Host www.wrox.comUser-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

注意为了将文本"Professional Ajax"作为URL的参数需要编码处理其内容将空格替换成%20这称为URL编码(URL encoding) 常用于HTTP的许多地方(JavaScript提供了内建的函数来处理URL编码和解码这些将在本章中的后续部分中说明) 。 "名称-值"(name-value)对用&隔开。绝大部分的服务器端技术能够自动对请求主体进行解码并为这些值的访问提供一些逻辑方式。当然如何使用这些数据还是由服务器决定的。

浏览器发送的首部通常比本文中所讨论的要多得多。为了简单起见这里的例子尽可能简短。

仅供学习与交流如有侵权请联系网站删除谢谢4

精品好文档推荐学习交流

另一方面 POST请求在请求主体中为服务器提供了一些附加的信息。通常 当填写一个在线表单并提交它时这些填入的数据将以POST请求的方式发送给服务器。

以下就是一个典型的POST请求

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-Alivename=Professional%20Ajax&publisher=Wiley

从上面可以发现 POST请求和GET请求之间有一些区别。首先请求行开始处的GET改为了POST 以表示不同的请求类型。你会发现首部Host和User-Agent仍然存在在后面有两个新行。其中首部Content-Type说明了请求主体的内容是如何编码的。浏览器始终以appl ication/x-www-form-urlencoded的格式编码来传送数据这是针对简单URL编码的MIME类型。首部Content-Length说明了请求主体的字节数。在首部Connection后是一个空行再后面就是请求主体。与大多数浏览器的POST请求一样这是以简单的"名称-值"对的形式给出的其中name是Professional Ajax publisher是Wiley。你可以以同样的格式来组织URL的查询字符串参数。

正如前面所提到的还有其他的HTTP请求类型它们遵从的基本格式与GET请求和POST请求相同。下一步我们来看看服务器将对HTTP请求发送什么响应。

HTTP响应

如下所示 HTTP响应的格式与请求的格式十分类似

<status-line><headers><blank line>[<response-body>]

仅供学习与交流如有侵权请联系网站删除谢谢5

精品好文档推荐学习交流

正如你所见在响应中唯一真正的区别在于第一行中用状态信息代替了请求信息。状态行(status line)通过提供一个状态码来说明所请求的资源情况。 以下就是一个HTTP响应的例子

HTTP/1. 1 200 OK Date Sat,31 Dec 2005 23 59 59 GMT Content-Type text/html charset=ISO-8859-1 Content-Length 122

<html><head><title>Wrox Homepage</title></head><body>< – bodygoes here –></body></html>

在本例中状态行给出的HTTP状态代码是200 以及消息OK。状态行始终包含的是状态码和相应的简短消息 以避免混乱。最常用的状态码有

◆200(OK) 找到了该资源并且一切正常。

◆304(NOT MODIFIED) 该资源在上次请求之后没有任何修改。这通常用于浏览器的缓存机制。

◆401 (UNAUTHORIZED) 客户端无权访问该资源。这通常会使得浏览器要求用户输入用户名和密码 以登录到服务器。

◆403(FORBIDDEN) 客户端未能获得授权。这通常是在401之后输入了不正确的用户名或密码。

◆404(NOT FOUND) 在指定的位置不存在所申请的资源。

在状态行之后是一些首部。通常服务器会返回一个名为Data的首部用来说明响应生成的日期和时间(服务器通常还会返回一些关于其自身的信息尽管并非是必需的) 。接下来的两个首部大家应该熟悉就是与POST请求中一样的Content-Type和Content-Length。在本例中首部Content-Type指定了MIME类型HTML(text/html) 其编码类型是ISO-8859-1 (这是针对美国英语资源的编码标准) 。响应主体所包含的就是所请求资源的HTML源文件(尽仅供学习与交流如有侵权请联系网站删除谢谢6

精品好文档推荐学习交流

管还可能包含纯文本或其他资源类型的二进制数据) 。浏览器将把这些数据显示给用户。

注意这里并没有指明针对该响应的请求类型不过这对于服务器并不重要。客户端知道每种类型的请求将返回什么类型的数据并决定如何使用这些数据。powered by performancing firefox powered by performancingfirefox Posted in Http协议|No Comments?

GET方法和POST方法的区别Friday,March 24th,2006 1、 GET方法多用于不改变系统设置的情况 比如获取数据。但是也可以用来向服务器传递数据。方法是把参数义键值对的形式放到URL里面。数据量有限制。

POST方法用于改变服务器的设置 向服务器传递数据。方法是把数据放到传送体里面不在URL里面显示。而且数据量没有限制。

Posted in Http协议,Linux| 10 Comments?

Http状态码一览表Monday,March 20th,2006 1*请求收到继续处理2*操作成功收到分析、接受3*完成此请求必须进一步处理4*请求包含一个错误语法或不能完成5*服务器执行一个完全有效请求失败

100--客户必须继续发出请求101--客户要求服务器根据请求转换HTTP协议版本

200--交易成功201--提示知道新文件的URL 202--接受和处理、但处理未完成203--返回信息不确定或不完整204--请求收到但返回信息为空205--服务器完成了请求用户代理必须复位当前已经浏览过的文件206--服务器已经完成了部分用户的GET请求

仅供学习与交流如有侵权请联系网站删除谢谢7

精品好文档推荐学习交流

300--请求的资源可在多处得到301--删除请求数据302--在其他地址发现了请求数据303--建议客户访问其他URL或访问方式304--客户端已经执行了GET但文件未变化305--请求的资源必须从服务器指定的地址得到306--前一版本HTTP中使用的代码现行版本中不再使用307--申明请求的资源临时性删除

400--错误请求如语法错误401--请求授权失败402--保留有效ChargeTo头响应403--请求不允许404--没有发现文件、查询或URl 405--用户在Request-Line字段定义的方法不允许406--根据用户发送的Accept拖请求资源不可访问407--类似401用户必须首先在代理服务器上得到授权408--客户端没有在用户指定的饿时间内完成请求409--对当前资源状态请求不能完成410--服务器上不再有此资源且无进一步的参考地址411--服务器拒绝用户定义的Content-Length属性请求412--一个或多个请求头字段在当前请求中错误413--请求的资源大于服务器允许的大小414--请求的资源URL长于服务器允许的长度415--请求资源不支持请求项目格式416--请求中包含Range请求头字段在当前请求资源范围内没有range指示值请求也不包含If-Range请求头字段417--服务器不满足请求Expect头字段指定的期望值如果是代理服务器可能是下一级服务器不能满足请求

500--服务器产生内部错误501--服务器不支持请求的函数502--服务器暂时不可用有时是为了防止发生系统过载503--服务器过载或暂停维修504--关口过载服务器使用另一个关口或服务来响应用户等待时间设定值较长505--服务器不支持或拒绝支请求头中指定的HTTP版本

==

英文版

仅供学习与交流如有侵权请联系网站删除谢谢8

精品好文档推荐学习交流

100 Continue 101 Switching Protocols 102 Processing 200 OK

201 Created 202 Accepted 203 Non-Authoriative Information 204 NoContent 205 Reset Content 206 Partial Content 207 Multi-Status

300 Multiple Choices 301 Moved Permanently 302 Found 303 SeeOther 304 Not Modified 305 Use Proxy 306 (Unused)307 TemporaryRedirect 400 Bad Request 401 Unauthorized 402 Payment Granted

403 Forbidden 404 File Not Found 405 Method Not Allowed 406 NotAcceptable 407 Proxy Authentication Required 408 Request Time-out

409 Conflict 410 Gone 411 Length Required 412 PreconditionFailed 413 Request Entity Too Large 414 Request-URI Too Large

415 Unsupported Media Type 416 Requested range not satisfiable

417 Expectation Failed 422 Unprocessable Entity 423 Locked 424Failed Dependency 500 Internal Server Error 501 Not Implemented

502 Bad Gateway 503 Service Unavailable 504 Gateway Timeout 505HTTP Version Not Supported 507 Insufficient Storage

特别声明

1资料来源于互联网版权归属原作者

2资料内容属于网络意见与本账号立场无关

3如有侵权请告知立即删除。

仅供学习与交流如有侵权请联系网站删除谢谢9

HostKvm - 夏季云服务器七折优惠 香港和韩国机房月付5.95美元起

HostKvm,我们很多人都算是比较熟悉的国人服务商,旗下也有多个品牌,差异化多占位策略营销的,商家是一个创建于2013年的品牌,有提供中国香港、美国、日本、新加坡区域虚拟化服务器业务,所有业务均对中国大陆地区线路优化,已经如果做海外线路的话,竞争力不够。今天有看到HostKvm夏季优惠发布,主要针对香港国际和韩国VPS提供7折优惠,折后最低月付5.95美元,其他机房VPS依然是全场8折。第一、夏...

选择Vultr VPS主机不支持支付宝付款的解决方案

在刚才更新Vultr 新年福利文章的时候突然想到前几天有网友问到自己有在Vultr 注册账户的时候无法用支付宝付款的问题,当时有帮助他给予解决,这里正好顺带一并介绍整理出来。毕竟对于来说,虽然使用的服务器不多,但是至少是见过世面的,大大小小商家的一些特性特征还是比较清楚的。在这篇文章中,和大家分享如果我们有在Vultr新注册账户或者充值购买云服务器的时候,不支持支付宝付款的原因。毕竟我们是知道的,...

哪个好Vultr搬瓦工和Vultr97%,搬瓦工和Vultr全方位比较!

搬瓦工和Vultr哪个好?搬瓦工和Vultr都是非常火爆的国外VPS,可以说是国内网友买的最多的两家,那么搬瓦工和Vultr哪个好?如果要选择VPS,首先我们要考虑成本、服务器质量以及产品的售后服务。老玩家都知道目前在国内最受欢迎的国外VPS服务商vultr和搬瓦工口碑都很不错。搬瓦工和Vultr哪个稳定?搬瓦工和Vultr哪个速度快?为了回答这些问题,本文从线路、速度、功能、售后等多方面对比这两...

http://hao123.com为你推荐
ps移花接木教程Ps 移花接木 人物换脸教程文件夹删不掉文件夹删除不了是什么原因?百度抢票浏览器百度浏览器怎么抢票?bluestacksbluestacks怎么用不兼容安卓手机软件不兼容怎么办?镜像文件是什么系统镜像是什么彩信中心联通手机的彩信中心如何设置?开机滚动条如何关闭开机滚动条?ios7固件下载ios 7及以上固件请在设备上点信任在哪点xv播放器下载迅雷看看下载的XV格式的电影用什么播放器可以播放?(没有互联网的情况下)
1g虚拟主机 备案域名查询 免费cn域名注册 如何注销域名备案 花生壳免费域名 softlayer wdcp tightvnc 牛人与腾讯客服对话 浙江独立 亚洲小于500m 免费网站申请 刀片服务器是什么 me空间社区 1g内存 国外免费asp空间 中国电信宽带测速网 hdd 湖南idc 免费网络 更多