对于HTTP协议来说,好多不是计算机网络专业的朋友来说不是很熟悉,特别是针对其中的一些语法也感觉莫名其妙,其实HTTP协议中也是有一定的语法规则的(其实就是一些硬性规定,比如我们日常生活中自然语言的一些规定:好样的的是褒义词,笨蛋是贬义词),Content-Type就是HTTP协议中用来规定一些文件类型的,传输过程中根据设置好的Content-Type就可以知道要处理的内容是什么类型...
$.ajax({ method:"post", url:"http://www.w3capi.com/test", contentType:"application/json;charset=utf-8", data:{ 'title':'test', 'sub' : [1,2,3] } });
最终发送请求的格式为:
POST http://www.w3capi.com/test HTTP/1.1 Content-Type: application/json;charset=utf-8 {"title":"test","sub":[1,2,3]}
三、multipart/form-data
<form action="/Index/test" enctype="multipart/form-data" method="post"> <input type="file" name="file_data" /> <input type="submit" value="测试提交" /> </form>
POST http://www.w3capi.com/Index/test HTTP/1.1 Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryusAwgDgO8X0WGuvH ------WebKitFormBoundaryusAwgDgO8X0WGuvH Content-Disposition: form-data; name="file_data"; filename="test_img.jpg" Content-Type: image/jpeg ------WebKitFormBoundaryusAwgDgO8X0WGuvH--
根据请求可以看到,在Content-Type中声明了内容的类型为multipart/form-data,而后紧跟 boundary 参数的值 用于分割不同的字段,为了避免与正文内容重复,消息主体里按照字段个数又分为多个结构类似的部分,每部分都是以 ------boundary值 开始,紧接着内容描述信息,然后是回车,最后是字段具体内容(文本或二进制)。如果传输的是文件,还要包含文件名和文件类型信息。消息主体最后以 ------boundary值 结束。关于 mutipart/form-data 的详细说明,请前往 RFC1867 查看。