http之数据传输原理和content-type
数据到底是以什么形式在网络中进行传输的?
大家都知道,前后端通过数据请求和响应进行交互,进而完成整个网站功能。在这个过程中数据的传输就变得异常重要了,由此引发的困惑我许久的问题:“这个数据是以什么形式传递的呢?”
网上的解释是网络数据是以 http协议(超文本协议) 进行传输的,那么这个数据在传递过程中是以文本形式传输的吗?答案是非也,所有网络数据都是以二进制流进行传输的,至于我们捕获到的文本形式的的请求其实是二进制数据流经过编辑器等处理过的文本信息。
注意点:http的超级文本其实就是二进制在http协议中的存在形式
常见的请求方式
HTTP/1.1 协议规定的 HTTP 请求方法有 OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT 这几种。其中post请求通常用于文件的上传、表单的提交等向服务器端发送数据。
四种post请求的content-type
application/x-www-form-urlencoded
这种方式是最常见的请求头,像ajax、以及浏览器原生的form表单提交默认请求头都是采用这种方式。
表现形式:一组属性名和属性值以=相连,不同属性之间以&符号相连,和浏览器中的url组成方式一样。
图示:
multipart/form-data
这种方式通常用于文件、图片等的上传。
表现形式:
由三部分组成:boundary+content+content-type(这个不一定都有,只有在上传文件的时候会有)。其中boundary是用于识别不同数据的分隔符,content-type是上传文件的文件类型。
图示:
application/json
这种方式现在普遍应用于非文件类型的数据提交。采用json格式传输数据是一种非常好的方式,这种方式不仅传输的数据量少,而且可以嵌套多层传递复杂的数据。
text/xml
还有一种text/xml的古老的方式,谁有兴趣谁去研究一下吧zzz
参考文献
https://stackoverflow.com/questions/3508338/what-is-the-boundary-in-multipart-form-data