1. HTTP请求格式:
<request line>
<headers>
<blank line>
[<request body>]
在HTTP请求中,第一行是一个请求行,用来说请求的方式,要访问的资源,HTTP版本。然后是首部小节header,用来说明服务器要使用的附加信息。首部之后是一个空行,然后是请求主体。
2. GET和POST
HTTP定义了与服务器交互的不同方法,最基本的方法是POST和GET。HTTP-GET和HTTP-POST是使用HTTP的标准协议动词,用于编码和传送变量名/变量值对参数,如果请求成功则返回应答。URL字符串中如果含有中文字符则用base64加密。
POST方式,变量名/变量值不作为URL的一部分传送,而是放在实际的HTTP请求消息内部被传送
浏览器请求时,默认是GET方式
GET一般用于获取/查询 资源信息,而POST一般用于更新 资源信息
#根据HTTP规范,GET用于信息获取,而且应该是安全的和幂等的。
1.所谓安全的意味着该操作用于获取信息而非修改信息。换句话说,GET请求一般不应产生副作用。就是说,它仅仅是获取资源信息,就像数据库查询一样,不会修改,增加数据,不会影响资源的状态。
* 注意:这里安全的含义仅仅是指是非修改信息。
2.幂等的意味着对同一URL的多个请求应该返回同样的结果。
#根据HTTP规范,POST表示可能修改变服务器上的资源的请求。
| get | post |
|-----------------------------------------------------+----------------------------------------------------------- |
| 从服务器上获取数据 | 向服务器传送数据 |
| 在客户端,通过URL提交数据 | 数据放在HTML HEADER内提交 |
| 服务器端用Request.QueryString获取变量的值 | 服务器端用Request.Form获取提交的数据 |
| 提交的数据受到URL长度的限制,如IE限制长度为2083字节 | 没有限制 |
| 参数显示在地址栏,不安全 | 安全 |
示例代码
#+BEGIN_EXAMPLE
<!-分别通过get和post方式提交表单-->
<FORM ACTION="getpost.asp" METHOD="get">
<INPUT TYPE="text" NAME="Text" VALUE="http://wxf0701.cnblogs.com//>
<INPUT TYPE="submit" VALUE="Get方式"></INPUT>
</FORM>
<BR>
<FORM ACTION="getpost.asp" METHOD="post">
<INPUT TYPE="text" NAME="Text" VALUE="http://wxf0701.cnblogs.com/>
<INPUT TYPE="submit" VALUE="Post方式"></INPUT>
</FORM>
<BR>
<% If Request.QueryString("Text") <> "" Then %>
通过get方式传递的字符串是: "<B><%= Request.QueryString("Text") %></B>"<BR>
<% End If %>
<% If Request.Form("Text") <> "" Then %>
通过Post方式传递的字符串是: "<B><%= Request.Form("Text") %></B>"<BR>
<% End If %>
*HTTP响应实例*
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>
<!-- body goes here -->
</body>
</html>
2.最常用的状态码有:
◆200 (OK): 找到了该资源,并且一切正常。
◆304 (NOT MODIFIED): 该资源在上次请求之后没有任何修改。这通常用于浏览器的缓存机制。
◆401 (UNAUTHORIZED): 客户端无权访问该资源。这通常会使得浏览器要求用户输入用户名和密码,以登录到服务器。
◆403 (FORBIDDEN): 客户端未能获得授权。这通常是在401之后输入了不正确的用户名或密码。
◆404 (NOT FOUND): 在指定的位置不存在所申请的资源。