- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Http POST提交数据的四种方式解析
我们知道,HTTP协议是以ASCII码传输,建立在TCP/IP协议之上的应用 层规。HTTP协议规定的HTTP请求方法有OPTIONS. GET、HEAD、POST、PUT、 DELETE. TRACE. CONNECT这几种。其中POST 一般用来向服务端提交数据,本 文主要讨论POST提交数据的几种方式。
协议规定POST提交的数据必须放在消息主体(entity-body)中,但协议并 没有规定数据必须使用什么编码方式。但是,数据发送出去,还要服务端解析成 功才有意义。
服务端通常是根据请求头(headers)中的Content-Type字段来获知请求中 的消息主体是用何种方式编码,再对主体进行解析。
POST提交数据方案,包含了 Content-Type和消息主体编码方式两部分。 下面就正式开始介绍它们。
在服务器端判断request来自Ajax请求(异步)还是传统请求(同步):
file file nie nie
UMHD. ixjii, ocy 14 uni
Server Apache-Coyote/1.1
Transfcr-Encocfing: chunked
Vaty: Origin
X-Content-Type?OptlorYS: nosniff
X Frame Options: DENY
X-XSS-Protectlon: 1; mode=block
Request Headers view source
Accept: ?/*
Accept*Encoding: gzip, deflate
Accent-Language: zh-CN#zh;q=0.8ren;q=0.6tzh-TW;Q=0.4
Cache*Control: no-cache
Connection: keep-alive
Content*Length: 465039
Content-Type: nulti(art/forfi-data; boundary= bKltFoni8oundary8crEb7zcqQkohQlT
enctype: ?miUipart/forfi-jata
Host: 12:8282
Origin: http://localhost:40O?
Pragma: no-cache
Referee: http://localhO5t:40O0/TBTh€reSurvey/ff8m8156e01d4dei56e371al0€0003
User-Agem: Kozilla/5.0 (Macintosh: Intel Mac OS X AppleWebKit/537.36 (KHTML, like Gecko! Ch rone/5
| X-Roquc$t?d-W(th: WLHttpRcqucst
Roqucst Payload
bKitForrrfiound^ry8crEb7zcqQkobQiT
Contcnt-Oisposition: forw-data; narrcs,,filc; f 1 lcn?ncaftM.png
Content-Type: litage/png
5/20 requests 1 21K...
bKltFonreoundaryecrEb7zcQQkohQiT--
application/x--form-urlencoded (默认常用的)
这应该是最常见的POST提交数据的方式了。浏览器的原生
表单,如果不设置enctype
属性,那么最终就会以application/x--form-urlencoded方式提交数据。
Content-Type 被指定为 application/x--form-urlencoded;其次,提交的 数据按照keyl=valIkey2=val2的方式进行编码,key和val都进行了 URL 转码。大部分服务端语言都对这种方式有很好的支持。例如PHP中, $ POST[rtitleF]可以获取到title的值,$ POST[rsubr]可以得到sub数 So
Remote Address: 12:8282
▼ Response Headers view source Access-Control-Allow-Credentials: t rue Access-Control-Allow-Origin: null
Content-Type: application/json;charset=UTF-8 Date: Mon, 05 Sep 2016 05:13:29 GMT
Server: Apache-Coyote/1.1 Transfer-Encoding: chunked Vary: Origin
X-Content-Type-Op
文档评论(0)