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 424Failed Dependency 500 Internal Server Error 501 Not Implemented
502 Bad Gateway 503 Service Unavailable 504 Gateway Timeout 505HTTP Version Not Supported 507 Insufficient Storage
特别声明
1资料来源于互联网版权归属原作者
2资料内容属于网络意见与本账号立场无关
3如有侵权请告知立即删除。
仅供学习与交流如有侵权请联系网站删除谢谢9
HostKvm,我们很多人都算是比较熟悉的国人服务商,旗下也有多个品牌,差异化多占位策略营销的,商家是一个创建于2013年的品牌,有提供中国香港、美国、日本、新加坡区域虚拟化服务器业务,所有业务均对中国大陆地区线路优化,已经如果做海外线路的话,竞争力不够。今天有看到HostKvm夏季优惠发布,主要针对香港国际和韩国VPS提供7折优惠,折后最低月付5.95美元,其他机房VPS依然是全场8折。第一、夏...
在刚才更新Vultr 新年福利文章的时候突然想到前几天有网友问到自己有在Vultr 注册账户的时候无法用支付宝付款的问题,当时有帮助他给予解决,这里正好顺带一并介绍整理出来。毕竟对于来说,虽然使用的服务器不多,但是至少是见过世面的,大大小小商家的一些特性特征还是比较清楚的。在这篇文章中,和大家分享如果我们有在Vultr新注册账户或者充值购买云服务器的时候,不支持支付宝付款的原因。毕竟我们是知道的,...
搬瓦工和Vultr哪个好?搬瓦工和Vultr都是非常火爆的国外VPS,可以说是国内网友买的最多的两家,那么搬瓦工和Vultr哪个好?如果要选择VPS,首先我们要考虑成本、服务器质量以及产品的售后服务。老玩家都知道目前在国内最受欢迎的国外VPS服务商vultr和搬瓦工口碑都很不错。搬瓦工和Vultr哪个稳定?搬瓦工和Vultr哪个速度快?为了回答这些问题,本文从线路、速度、功能、售后等多方面对比这两...