contentType:发送信息至服务器时内容编码类型(告诉服务器从浏览器提交过来的数据格式)
默认值为contentType = "application/x-www-form-urlencoded"
ajax上传文件为什么设置false???
要想了解原因我们需要知道两点:
1.上传过程:先封装了一个 formData 对象,然后使用 post 方法将文件传给服务器,contentType = false
2.http上传文件问题
在 rfc1867 中为http添加了上传功能并限定 form 的 method 必须为 POST,enctype = “multipart/form-data”
查看Request headers
发现在 multipart/form-data 后面有boundary以及一串字符,这是分界符,后面的一堆字符串是随机生成的,目的是防止上传
文件中出现分界符导致服务器无法正确识别文件起始位置。multipart/form-data 请求是基于 http 原有的请求方式 post 而
来的。
请求头的不同,对于上传文件的请求,contentType = multipart/form-data是必须的
请求体不同,发送的每个字段内容之间必须要使用分界符来隔开
在 ajax 中 contentType 设置为 false 是为了避免 JQuery 对其操作,从而失去分界符,而使服务器不能正常解析文件。