HTTP协议的Content-Type(内容类型)-请求和响应

一、Request 的Content-Type
我们在开发的过程中需要注意客户端发送请求(Request)时的Content-Type设置,特别是使用ajax的时候,如果设置得不准确,很有可能导致请求失败。

实际开发中,常用的类型有:
如果是一个restful接口(json格式),一般将Content-Type设置为application/json; charset=UTF-8;
如果是文件上传,一般Content-Type设置为multipart/form-data
如果普通表单提交,一般Content-Type设置为application/x-www-form-urlencoded

二、Response 的Content-Type
服务端响应(Response)的Content-Type最好也保持准确,虽然一般web开发中,前端解析响应的数据不会根据Content-Type,并且服务端一般能自动设置准确的Content-Type,但是如果乱设置某些情况下可能会有问题,比如导出文件,打开图片等。

一般情况下不需要显示设置;
如果是文件导出,Content-Type 设置为 multipart/form-data,并且添加一个Content-Disposition设置为attachment;fileName=文件.后缀。

注:
1、Content-Disposition是Content-Type的扩展,告诉浏览器弹窗下载框,而不是直接在浏览器里展示文件。因为一般浏览器对于它能够处理的文件类型,如txt,pdf 等,它都是直接打开展示,而不是弹窗下载框。

2、未设置response的Content-type的情况,客户端将json数据当成普通文本
content-type →text/html;charset=UTF-8

3、如果在spring项目里使用@ResponseBody,Spring会将响应的Content-Type设置为application/json;charset=UTF-8;,可能会导致文件无法导出。

更多推荐

HTTP协议的Content-Type(内容类型)-请求和响应一、Request 的Content-Type我们在开发的过程中需要注意客户端发送请求(Reque