Http learning
HTTP相关知识:Http是user agent和orign server之前请求和响应的标准。提供传输控制,按顺序组织数据,和错误纠正。
浏览器的地址栏里输入的网站地址叫做URL,url构成:
http:// 代表超文本转移协议。
www 代表一个Web(万维网)服务器;
HTTP协议采用了请求/响应模型。一个http消息包含请求消息和响应消息。
这两种类型的消息由一个或者多个头域和可选的消息体组成。
HTTP的头域包括通用头,请求头,响应头和实体头四个部分。
请求报文格式如下:
请求行 - 通用信息头 - 请求头 - 实体头 - 报文主体
应答报文格式如下:
状态行 - 通用信息头 - 响应头 - 实体头 - 报文主体
1,通过WWW,用户从客户端(IE)向服务器发出请求,建立到服务器80端口的TCP链接。
2,建立连接后,客户机发送一个请求给服务器。请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。
3.,服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。
4,客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。
通俗的理解其过程:
用户在地址栏输入网址,就向该网站服务器发起第一次请求。
用户端的基本信息(协议版本号,IE信息,请求的内容等)会以请求消息的方式发送到服务器端。
服务器收到请求以后,根据请求的内容,服务器和网站程序做出处理,再将处理的结果放到响应消息中发送给客户端。
客户端的IE再把响应的内容显示出来。
COOKIE相关知识:
http是一个无状态的协议,一次请求响应结束就断开链接。
cookie和session可以解决http无法完成的,保存用户状态的问题。
Cookie 是 Web 服务器做出响应时,放在消息头里的信息。
通俗的理解其过程:
用户向服务器发起请求。
服务器向响应消息的头域中添加Set-Cookie 。
客户端收到响应消息后,浏览器会把 Cookie 的信息解析出来。以"名 / 值"对 (name-value pairs) 的形式用文本文件的格式储存保存在本地。
每当向该Web 服务器发出一次新请求时,浏览器会根据请求的站点在本地寻找以前存储的 Cookie,若找到对应的cookie,浏览器会提取其内容放到请求消息中发送给服务器端。
以下内容摘抄自 http://www.ibm.com/developerworks/cn/java/j-cookie/
---------------------------------------------------------------------------------------------------------------------------------
Set-Cookie:customer=huangxp; path=/foo; domain=.ibm.com;expires= Wednesday, 19-OCT-05 23:12:40 GMT; Set-Cookie 的每个属性解释如下:
[*]Customer=huangxp 一个"名称=值"对,把名称 customer 设置为值"huangxp",这个属性在 Cookie 中必须有。
[*]path=/foo 控制哪些访问能够触发 cookie 的发送。如果没有指定 path,cookie 会在所有对此站点的 HTTP 传送时发送。如果 path=/directory,只有访问 /directory 下面的网页时,cookie 才被发送。在这个例子中,用户在访问目录 /foo 下的内容时,浏览器将发送此 cookie。如果指定了 path,但是 path 与当前访问的 url 不符,则此 cookie 将被忽略。
[*]domain=.ibm.com 指定 cookie 被发送到哪台计算机上。正常情况下,cookie 只被送回最初向用户发送 cookie 的计算机。在这个例子中,cookie 会被发送到任何在 .ibm.com 域中的主机。如果 domain 被设为空,domain 就被设置为和提供 cookie 的 Web 服务器相同。如果 domain 不为空,并且它的值又和提供 cookie 的 Web 服务器域名不符,这个 Cookie 将被忽略。
[*]expires= Wednesday, 19-OCT-05 23:12:40 GMT 指定 cookie 失效的时间。如果没有指定失效时间,这个 cookie 就不会被写入计算机的硬盘上,并且只持续到这次会话结束。
[*]secure 如果 secure 这个词被作为 Set-Cookie 头的一部分,那么 cookie 只能通过安全通道传输(目前即 SSL 通道)。否则,浏览器将忽略此 Cookie。
以下内容来自百度百科
---------------------------------------------------------------------------------------------------------------------------------
状态消息
1xx:信息
消息:描述:100 Continue服务器仅接收到部分请求,但是一旦服务器并没有拒绝该请求,客户端应该继续发送其余的请求。101 Switching Protocols服务器转换协议:服务器将遵从客户的请求转换到另外一种协议。2xx:成功
消息:描述:200 OK请求成功(其后是对GET和POST请求的应答文档。)201 Created请求被创建完成,同时新的资源被创建。202 Accepted供处理的请求已被接受,但是处理未完成。203 Non-authoritative Information文档已经正常地返回,但一些应答头可能不正确,因为使用的是文档的拷贝。204 No Content没有新文档。浏览器应该继续显示原来的文档。如果用户定期地刷新页面,而Servlet可以确定用户文档足够新,这个状态代码是很有用的。205 Reset Content没有新文档。但浏览器应该重置它所显示的内容。用来强制浏览器清除表单输入内容。206 Partial Content客户发送了一个带有Range头的GET请求,服务器完成了它。3xx:重定向
消息:描述:300 Multiple Choices多重选择。链接列表。用户可以选择某链接到达目的地。最多允许五个地址。301 Moved Permanently所请求的页面已经转移至新的url。302 Found所请求的页面已经临时转移至新的url。303 See Other所请求的页面可在别的url下被找到。304 Not Modified未按预期修改文档。客户端有缓冲的文档并发出了一个条件性的请求(一般是提供If-Modified-Since头表示客户只想比指定日期更新的文档)。服务器告诉客户,原来缓冲的文档还可以继续使用。305 Use Proxy客户请求的文档应该通过Location头所指明的代理服务器提取。306 Unused 此代码被用于前一版本。目前已不再使用,但是代码依然被保留。307 Temporary Redirect被请求的页面已经临时移至新的url。4xx:客户端错误
消息:描述:400 Bad Request服务器未能理解请求。401 Unauthorized被请求的页面需要用户名和密码。401.1 登录失败。401.2服务器配置导致登录失败。401.3由于 ACL 对资源的限制而未获得授权。401.4筛选器授权失败。401.5 ISAPI/CGI 应用程序授权失败。401.7访问被 Web 服务器上的 URL 授权策略拒绝。这个错误代码为 IIS 6.0 所专用。402 Payment Required此代码尚无法使用。403 Forbidden对被请求页面的访问被禁止。403.1 执行访问被禁止。403.2读访问被禁止。403.3写访问被禁止。403.4要求 SSL。403.5要求 SSL 128。403.6IP 地址被拒绝。403.7要求客户端证书。403.8站点访问被拒绝。403.9用户数过多。403.10 配置无效。403.11密码更改。403.12拒绝访问映射表。403.13客户端证书被吊销。403.14拒绝目录列表。403.15超出客户端访问许可。403.16客户端证书不受信任或无效。403.17客户端证书已过期或尚未生效。403.18在当前的应用程序池中不能执行所请求的 URL。这个错误代码为 IIS 6.0 所专用。403.19不能为这个应用程序池中的客户端执行 CGI。这个错误代码为 IIS 6.0 所专用。403.20Passport 登录失败。这个错误代码为 IIS 6.0 所专用。404 Not Found服务器无法找到被请求的页面。404.0(无)–没有找到文件或目录。404.1无法在所请求的端口上访问 Web 站点。404.2Web 服务扩展锁定策略阻止本请求。404.3MIME 映射策略阻止本请求。405 Method Not Allowed请求中指定的方法不被允许。406 Not Acceptable服务器生成的响应无法被客户端所接受。407 Proxy Authentication Required用户必须首先使用代理服务器进行验证,这样请求才会被处理。408 Request Timeout请求超出了服务器的等待时间。409 Conflict由于冲突,请求无法被完成。410 Gone被请求的页面不可用。411 Length Required"Content-Length" 未被定义。如果无此内容,服务器不会接受请求。412 Precondition Failed请求中的前提条件被服务器评估为失败。413 Request Entity Too Large由于所请求的实体的太大,服务器不会接受请求。414 Request-url Too Long由于url太长,服务器不会接受请求。当post请求被转换为带有很长的查询信息的get请求时,就会发生这种情况。415 Unsupported Media Type由于媒介类型不被支持,服务器不会接受请求。416 Requested Range Not Satisfiable 服务器不能满足客户在请求中指定的Range头。417 Expectation Failed执行失败。423锁定的错误。5xx:服务器错误
消息:描述:500 Internal Server Error请求未完成。服务器遇到不可预知的情况。500.12应用程序正忙于在 Web 服务器上重新启动。500.13Web 服务器太忙。500.15不允许直接请求 Global.asa。500.16UNC 授权凭据不正确。这个错误代码为 IIS 6.0 所专用。500.18URL 授权存储不能打开。这个错误代码为 IIS 6.0 所专用。500.100内部 ASP 错误。501 Not Implemented请求未完成。服务器不支持所请求的功能。502 Bad Gateway请求未完成。服务器从上游服务器收到一个无效的响应。502.1CGI 应用程序超时。 · 502.2CGI 应用程序出错。503 Service Unavailable请求未完成。服务器临时过载或当机。504 Gateway Timeout网关超时。505 HTTP Version Not Supported服务器不支持请求中指明的HTTP协议版本。
页:
[1]