HTTP协议与HTML表单(再谈GET与POST的区别)

上传人:碎****木 文档编号:220863452 上传时间:2021-12-09 格式:DOCX 页数:8 大小:24.53KB
返回 下载 相关 举报
HTTP协议与HTML表单(再谈GET与POST的区别)_第1页
第1页 / 共8页
HTTP协议与HTML表单(再谈GET与POST的区别)_第2页
第2页 / 共8页
HTTP协议与HTML表单(再谈GET与POST的区别)_第3页
第3页 / 共8页
亲,该文档总共8页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《HTTP协议与HTML表单(再谈GET与POST的区别)》由会员分享,可在线阅读,更多相关《HTTP协议与HTML表单(再谈GET与POST的区别)(8页珍藏版)》请在金锄头文库上搜索。

1、 协议与 HTML 表单再谈 GET 与 POST 的区分 的 GET/POST 方式有何区分?这是一个老生常谈的问题,但老生常谈的问题往往有一些让人误会的结论。本文将带您浅尝 协议,在了 解 协议的同时将会呈现很多被人们无视的内容。在把握了 协议的过程中我们将自然而然地了解到 GET 与POST 的本质区分。 恳求从使用者的角度看,一个 恳求起始于用户端扫瞄器上输入的一个 URL 地址;网页中的一个超链接;提交一个 HTML 表单。但本质上说,一个 恳求起始于用户端向 效劳器发送的一个 URL 恳求。一个标准的 恳求由以下几个局部组成在 恳求中,第一行是恳求行request-line,用来说

2、明恳求类型、要访问的资源URL以及使用的 版本;紧接着是多行头部headers信息,用来说明效劳器要使用的附加信息; 头部信息之后是一个回车换行符rn,用于标明头部信息的完毕。以上是必需内容,依据需要可在头部信息完毕之后增加主体数据request-body; 主体数据之后是一个回车换行符rn,用于标明主体数据的完毕。需要留意的是恳求行request-line中的 URL 局部必需以 application/x-www-form-urlencoded 方式编码。主体数据request-body的编码方式由头部headers信息中的 Content-Type 指定。主体数据request-body

3、的长度由头部headers信息中的 Content-Length 指定。例如,我们可以在 IE扫瞄器上输入下面的 :/localhost:8000/hello/index.html 恳求的头部信息如下:GET /hello/index.html /1.1 Accept: */*Accept-Language: zh-cn Accept-Encoding: gzip, deflate Host: localhost:8000 Connection: Keep-AliveCookie: JSESSIONID=BBBA54D519F7A320A54211F0107F5EA6End上述信息没有 req

4、uest-body 局部,这是以 GET 方式发送的 恳求。假设恳求中需要附加主体数据,即增加 request-body 部 分,那么必需使用 POST 方式发送 恳求。HTML 超链接只能用 GET 方式提交 恳求,HTML 表 单那么可以使用两种方式提交 恳求。HTML 表单HTML 表单的使用方法如下:1. 2. 3. 4. VALUE5. 6. 7. 8. 表单中存在各种类型的表单域标签,如、及。每一种表单域标签均有 NAME与 VALUE 两种标签属性。这两个标签属性打算了表单提交时传送的属性名及相应的值。目标地址URLaction标签属性指定了表单提交的目标地址,其值可以是完整的

5、URL。如:假设放置表单的网页与表单提交的目标地址在同一个 效劳器上,那么目标地址可以用确定路径表示确定路径相对于 效劳器。确定路径以“/开”头,包括 WEB 应用上下文及恳求。如:假设放置表单的网页与表单提交的目标地址在同一个 WEB 应用上下文上,那么目标地址可以用相对路径表示相对路径相对于放置表单的网页。相对路径不以“/”开头,不包括WEB 应用上下文。如:需要留意的是,action标签属性的值必需符合 URL 的要求,其编码必需符合 application/x- www-form-urlencoded 编码规章。如下面的表单:1. 2. 3. 这样的表单是不符合要求的。假设其 URL

6、值存在非法字符如中文字符,应将其进展URL Encoding 处理。URL Encoding 的处理方法如下: 字母数字字符 “a“ 到 “z“、“A“ 到 “Z“ 和 “0“ 到 “9“ 保持不变。 特别字符 “.“、“-“、“*“ 和 “_“ 保持不变。 空格字符 “ “ 转换为一个加号 “+“。 全部其他字符都是担忧全的,因此首先使用一种编码机制将它们转换为一个或多个字节。然后对每个字节用一个包含 3 个字符的字符串 “%xy“ 表示,其中 xy 为该字节的两位十六进制表示形式。推举的编码机制是 UTF-8。将“中文”两个字符进展 URL Encoding 所得到的值就是“%E4%B8%

7、AD%E6%96%87”。所以正确的表单应当是:1. 2. 3. 发送方式method 标签属性指定了表单的发送方式,发送方式只有两种: GET 及 POST。当以 GET方式发送表单时,发送的 恳求没有 request-body 局部,所以不需要指定enctype 标签属性。GET方式只提交表单域中的数据,action 标签属性中假设存在?子句,GET方式将不予处理。如下面的表单:1. 2. 3. 4. 5. 表单提交时没有包括 opt 属性, 头部信息如下:GET /hello/checkUser.html?username=yyy&age=zzz /1.1 Referer: :/loca

8、lhost:8000/hello/index.htmlAccept: */*Accept-Language: zh-cn Accept-Encoding: gzip, deflate Host: localhost:8000 Connection: Keep-AliveCookie: JSESSIONID=BBBA54D519F7A320A54211F0107F5EA6End需要留意的是,以 GET方式提交表单时,每个表单域的 NAME 与 VALUE 要以 URL 的 方式提交,所以每个表单域的 NAME与 VALUE 均要进展 URL Encoding 处理。这个操作通常是由用户端扫瞄器完

9、成的。如下面的表单:1. 2. 3. 4. 5. 6. 其中表单域 opt 的 VALUE 是中文字符“中文”,在表单提交时,用户端扫瞄器会自动将其进展 URL Encoding。 头部信息如下:GET /hello/checkUser.html?opt=%E4%B8%AD%E6%96%87&username=yyy&age=zzz /1.1Referer: :/localhost:8000/hello/index.html Accept: */*Accept-Language: zh-cn Accept-Encoding: gzip, deflate Host: localhost:8000

10、Connection: Keep-AliveCookie: JSESSIONID=BBBA54D519F7A320A54211F0107F5EA6End当以 POST 方式发送表单时,表单域中的数据将作为 request-body 提交,action 标签属性中的?子句将在 request-line 中得以保存。如下面的表单:1. 2. 3. 4. 5. 表单提交时, 头部信息如下:POST /hello/checkUser.html?opt=xxx /1.1 Referer: :/localhost:8000/hello/index.html Accept: */*Accept-Language: zh-cnContent-Type: application/x-www-form-urlencoded Accept-Encoding: gzip, deflateHost: localhost:8000Content-Length: 20 Connection: Keep-Alive Cache-Control: no-cacheCookie: JSESSIONID=BBBA54D519F7A320A54211F0107F5EA6username=yyy&age=zzzEnd需要留意的是,以 POS

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 教育/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号