所有分类
  • 所有分类
  • 后端开发
HTTP协议管不着?POST提交数据,原来这么有讲究

HTTP协议管不着?POST提交数据,原来这么有讲究

提交数据的几种方式。提交的数据必须放在消息主体(entity-body)中,但协议并没有规定数据必须使用什么编码方式。字段来获知请求中的消息主体是用何种方式编码,再对主体进行解析。提交数据的方式了。方式提交数据。提交数据时,也是使用这种方式

  

你知道么,HTTP协议管不着我们上传数据用哪种编码!是不是觉得很意外?

咱们得研究POST提交数据,这儿头有两个原因:第一个就是Content-Type; 第二个,就是得知道发过去的数据哪儿去了。你发出请求的时候,服务器看了下Content-Type参数,就知道你传的东西长什么样,然后就把它解析出来啦

想试一下这种方法吗?如果你没有设置好浏览器默认的 form 表单里的 enctype 属性的话,它会给你选择用 application/x-www-form-urlencoded 的方式来传输数据哟~别忘了,Content-Type 会告诉你,实际上数据它是采用 multipart/form-data 格式编码的,而且还有个特殊的边界标签。最有意思的就是,消息主体居然能按照字段数量分段,每段都以 ————— boundary为开始,然后写下内容说明,再回车换行,最后才出现真正的字段内容~

POST http://www.example.com HTTP/1.1
Content-Type: application/x-www-form-urlencoded;charset=utf-8
title=test&sub%5B%5D=1&sub%5B%5D=2&sub%5B%5D=3

话说回来了,到底为啥我们要换新提交方式?这个问题可不小!你看现在网上好多网站,甚至WebAPP也在用Ajax来传数据。那么咱们干嘛还费劲去探索别的新方法,让编程变得更顺手点不行吗?

HTTP协议管不着?POST提交数据,原来这么有讲究

POST http://www.example.com HTTP/1.1
Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryrGKCBY7qhFd3TrwA
------WebKitFormBoundaryrGKCBY7qhFd3TrwA
Content-Disposition: form-data; name="text"
title
------WebKitFormBoundaryrGKCBY7qhFd3TrwA
Content-Disposition: form-data; name="file"; filename="chrome.png"
Content-Type: image/png
PNG ... content of chrome.png ...
------WebKitFormBoundaryrGKCBY7qhFd3TrwA--

你听说过有人用消息主体代替请求头吗?对,就是把那东西变成了JSON字符串。别看不起JSON,它可不止是键和值这么简单,还能处理各种复杂的数据结构。之前我做项目时,要传给服务器好多层次的数据,最后直接转换成JSON送上去了,省事儿又快!

记住有些服务器上的编程语言可能不支持这种方法,比如PHP就是这样。这种情况下,你就得自个想法子解决啦:比如如果看到HTTP头里边的Content-Type显示的是那个叫什么“application/json”的话,那么找php://input这个地方就能找到原始的输入流了,然后把它变成一个对象就ok!

哈喽,你还可以用AngularJS设置成用x-www-form-urlencoded的方式来传输数据。听说市面上都能找到好多好用的JavaScript库就连处理XML-RPC服务也毫不费力!

先弄清楚咋提交数据呗?这个其实不强制看具体情况。无论如何,别忘了遵守规则今儿咱们就聊聊这事儿,感受如何?如果有啥想法或疑惑,赶紧在评论里留言!别忘了给个赞再分享出去,让大家一起讨论!

var data = {'title':'test', 'sub' : [1,2,3]};
$http.post(url, data).success(function(result) {
...
});

POST http://www.example.com HTTP/1.1
Content-Type: application/json;charset=utf-8
{"title":"test","sub":[1,2,3]}

原文链接:https://www.icz.com/technicalinformation/web/2024/03/11843.html,转载请注明出处~~~
0

评论0

请先
注意:请收藏好网址www.icz.com,防止失联!站内免费资源持续上传中…!赞助我们
显示验证码
没有账号?注册  忘记密码?