㈠ 什么是content-type类型
Content-Type(内容类型),一般是指网页中存在的 Content-Type,用于定义网络文件的类型和网页的编码,决定浏览器将以什么形式、什么编码读取这个文件。
这就是经常看到一些 PHP 网页点击的结果却是下载一个文件或一张图片的原因。Content-Type 标头告诉客户端实际返回的内容的内容类型。
Content-Type是Http的实体首部字段,用于说明请求或返回的消息主体是用何种方式编码,在request header和response header里都存在。
常用类型:
一、application/x-www-form-urlencoded
1、浏览器的原生form表单。
2、提交的数据按照 key1=val1&key2=val2 的方式进行编码,key和val都进行了URL转码。
二、multipart/form-data
常见的 POST 数据提交的方式。我们使用表单上传文件时,必须让 form 的 enctype 等于这个值。
首先生成了一个 boundary 用于分割不同的字段,为了避免与正文内容重复,boundary 很长很复杂。然后 Content-Type 里指明了数据是以 multipart/form-data 来编码,本次请求的 boundary 是什么内容。
消息主体里按照字段个数又分为多个结构类似的部分,每部分都是以 –boundary 开始,紧接着是内容描述信息,然后是回车,最后是字段具体内容(文本或二进制)。如果传输的是文件,还要包含文件名和文件类型信息。消息主体最后以 –boundary– 标示结束。
三、application/json
消息主体是序列化后的 JSON 字符串,这个类型越来越多地被大家所使用。
四、text/xml
是一种使用 HTTP 作为传输协议,XML 作为编码方式的远程调用规范。
㈡ Response Contenttype属性 指定MIME类型可以做什么
Response.ContentType 按F12进去查看.NET注释
// // 摘要: // 获取或设置输出流的 HTTP MIME 类型。 // // 返回结果: // 输出流的 HTTP MIME 类型。默认值为“text/html”。 // // 异常: // System.Web.HttpException: // System.Web.HttpResponse.ContentType属性设置为 null。 public string ContentType { get; set; }
Contenttype属性,它定义服务器发送给客户端内容的MIME类型。 MIME全称Multipurpose Internet Mail Extensions,即多功能Internet邮件扩展。
使用输出流输出一张图片的时候,比如做验证码图片的时候 如果在Firefox中直接浏览验证码是乱码,放在<img>里面则不会
这时候就要事先指定
Response.ContentType = "image/jpeg";//设定MIME类型
在网页编程中我们有时将超链接指向一个word或Excel文件,当用户点击这个链接时浏览器会自动调用对应方法将这个文件打开。之所以能做到这点 就是因 为用户机器上安装office后会在浏览器中注册对应的MIME资源类型。比如说word文件的MIME类型是Application/msword(前 者是MIME类型,后者是MIME子类),Excel文件的MIME资源类型是Application/msexcel。事实上,凡是浏览器能处理的所有 资源都有对应的MIME资源类型,比如说html文件的MIME类型是Text/html,JPG文件的MIME类型是Image/JPG。在与服务器的 交互中,浏览器就是根据所接受数据的MIME类型来判断要进行什么样的处理,对html、JPG等文件浏览器直接将其打开,对Word、Excel等浏览 器自身不能打开的文件则调用相应方法打开。对没有标记MIME类型的文件,浏览器则根据其扩展名和文件内容猜测其类型。如果浏览器无法猜出,则将它作为 application/octet-stream。要了解各种文件的MIME类型,请在win98 我的电脑->查看->文件夹选项->文件类型 中查看。
MIME类型就是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。
下面列出常用的文件对应的MIME类型:
㈢ ajax content-type怎么设置
contentType,默认值:"application/x-www-form-urlencoded"。意思是“发送信息至服务器时内容编码类型”,其默认值适合大多数情况。如果你明确地传递了一个content-type给$.ajax()那么它必定会发送给服务器。
大多数情况不用重新指定,如果遇到乱码的问题,可以考虑添加一下参数,如:application/x-www-form-urlencoded后面加上;charset=UTF-8
contentType:"application/x-www-form-urlencoded;charset=UTF-8"
㈣ html中的content-type是什么意思
content-type是内容类型,用于定义网络文件的类型和网页的编码,决定文件接收方将以什么形式、什么编码读取这个文件。
用法示例:<metacontent="text/html; charset=gb2312" http-equiv="Content-Type"/>
描述内容类型的字符串。该字符串通常被格式化为类型/子类型,其中类型是常规内容范畴而子类为特定内容类型。
(4)文件contenttype自设定扩展阅读
content-type文件内容对照:
".*"="application/octet-stream"
".001"="application/x-001"
".301"="application/x-301"
".323"="text/h323"
".906"="application/x-906"
".907"="drawing/907"
".a11"="application/x-a11"
".acp"="audio/x-mei-aac"
".ai"="application/postscript"
".aif"="audio/aiff"
".aifc"="audio/aiff"
".aiff"="audio/aiff"
".anv"="application/x-anv"
".asa"="text/asa"
".asf"="video/x-ms-asf"
".asp"="text/asp"
".asx"="video/x-ms-asf"
".au"="audio/basic"
".avi"="video/avi"
".awf"="application/vnd.adobe.workflow"
".biz"="text/xml"
".bmp"="application/x-bmp"
".bot"="application/x-bot"
".c4t"="application/x-c4t"
".c90"="application/x-c90"
".cal"="application/x-cals"
".cat"="application/s-pki.seccat"
".cdf"="application/x-netcdf"
".cdr"="application/x-cdr"
".cel"="application/x-cel"
".cer"="application/x-x509-ca-cert"
".cg4"="application/x-g4"
".cgm"="application/x-cgm"
㈤ struts文件下载,如何动态配置contentType属性
这个值貌似是表单提交的时候自动提交的一个值post请求时 传给你了file 也传回了这个属性 private File upload;private String uploadContentType;加get set方法 在action中就可以直接用了,表单提交的时候会自动赋值的
㈥ jquery ajax 的contentType怎么设置
今天闲的无聊,把以前遗留的问题解决一下,比如让人头痛的Jquery乱码问题。其实这方面文章已经很多了,但全面解决各种问题的很少,今天总结一下,方便自己也方便大家。原因很简单: 其实他的中文乱码就是因为contentType没有指定编码,对于不同Jquery的版本中这个地方有不同的设置,就拿我遇到的,jquery-1.6.1和jquery-1.8.3就有不同的定义。 解决办法:在jquery-1.6.1文件中,搜索'contentType' 然后在application/x-www-form-urlencoded后面加上; charset=UTF-8 最终变成contentType:"application/x-www-form-urlencoded; charset=UTF-8"即可。 这样通过post方法提交后会出现乱码的问题就可以完美解决。 如果还有乱码现象,只能说你接收页面的编码也有问题, 这是由于异步对象XMLHttpRequest在处理返回的responseText的时候,是按UTF-8编码进行解码的。所以post方式的话,必须把这个页面另存一下,将页面文件的编码改为 UTF-8 (请务必记住)。JQuery Ajax提交出现中文乱码的解决办法2 前使用Jquery的时候一直没有发现,用Ajax提交的时候会出现乱码,我猜测可能是因为编码的原因 可能存在以下几点原因: 1.HTML的编码不统一:如页面用的GB2312,好像JQuery对它支持不太好。以前我一直都是用UTF-8的,一直都没有发现; 2.文件的编码,这个不好在表面上看到,简体中文版的操作系统存的文本格式的文件默认是 GB2312,建议把文件换成UTF-8格式的 最简单的解决办法,把提交的中文文本用 JS的 escape 处理一下,就不会现出现乱码了。解决的办法上用js的编码函数encodeURIComponent(string)处理一下,把中文"王晓明"编码成"%E7%8E%8B%E6%99%93%E6%98%8E",就OK了。 顺便说一下,我的tomcat下的URIEncoding=UTF-8 ——————————————————————————- 今天在使用jquery检测用户名的时候,对英文和数字的用户名检测正确,但是对中文的时候,检测出错,经过在网上查询一段时间,终于找到了原因,是乱码问题,解决方法: 1、只要在ajax中有数据提交时,如果页面编码不是utf-8的,都应该对提交的数据进行编码,js的编码函数为escape() 2、在服务器端页接收数据后进行解码,然后对数据进行相关的处理后再编码 3、返回到客户端后再解码 4、如果没有提交数据,而是直接从服务器端获取数据,那直接在服务器页面设置Response.Charset="gb2312"即可,不用再编码解码 vbscript中分别对应js中的escape()和unescape()函数 程序代码 ——————————————————————————- 通过以下处理方式得到解决: 传递参数的时候 对参数进行编码priceName="encodeURI(priceName)",也可以用encodeURIComponent(); 服务器端无需做其他处理: String priceName = request.getParameter("priceName");
㈦ jsp中的contentType与pageEncoding的区别和作用
pageEncoding是jsp文件本身的编码contentType的charset是指服务器发送给客户端时的内容编码JSP要经过两次的“编码”,第一阶段会用pageEncoding,第二阶段会用utf-8至utf-8,第三阶段就是由Tomcat出来的网页, 用的是contentType。第一阶段是jsp编译成.java,它会根据pageEncoding的设定读取jsp,结果是由指定的编码方案翻译成统一的UTF-8 JAVA源码(即.java),如果pageEncoding设定错了,或没有设定,出来的就是中文乱码。第二阶段是由JAVAC的JAVA源码至java byteCode的编译,不论JSP编写时候用的是什么编码方案,经过这个阶段的结果全部是UTF-8的encoding的java源码。JAVAC用UTF-8的encoding读取java源码,编译成UTF-8 encoding的二进制码(即.class),这是JVM对常数字串在二进制码(java encoding)内表达的规范。第三阶段是Tomcat(或其的application container)载入和执行阶段二的来的JAVA二进制码,输出的结果,也就是在客户端见到的,这时隐藏在阶段一和阶段二的参数contentType就发挥了功效contentType的设定.pageEncoding 和contentType的预设都是 ISO8859-1. 而随便设定了其中一个, 另一个就跟着一样了(TOMCAT4.1.27是如此). 但这不是绝对的, 这要看各自JSPC的处理方式. 而pageEncoding不等于contentType, 更有利亚洲区的文字 CJKV系JSP网页的开发和展示, (例pageEncoding=GB2312 不等于 contentType=utf-8)。jsp文件不像.java,.java在被编译器读入的时候默认采用的是操作系统所设定的locale所对应的编码,比如中国大陆就是GBK,台湾就是BIG5或者MS950。而一般我们不管是在记事本还是在ue中写代码,如果没有经过特别转码的话,写出来的都是本地编码格式的内容。所以编译器采用的方法刚好可以让虚拟机得到正确的资料。但是jsp文件不是这样,它没有这个默认转码过程,但是指定了pageEncoding就可以实现正确转码了。举个例子:<%@ page contentType="text/html;charset=utf-8" %>大都会打印出乱码,因为输入的“你好”是gbk的,但是服务器是否正确抓到“你好”不得而知。但是如果更改为<%@ page contentType="text/html;charset=utf-8" pageEncoding="GBK"%>这样就服务器一定会是正确抓到“你好”了。Java中将数据由UTF8转换成GB2312格式关键字: java字符编码UTF8转换成GB2312 当我们在基于HTTP协议的JSP或Servlet的应用中获取数据或发送请求时,JVM会把输送的数据编码成UTF8格式。如果我们直接从HTTP流中 提取中文数据,提取的结果为“????”(可能更多问号),为转换成我们能够理解的中文字符,我们需要把UTF8转换成GB2312,借助ISO- 8859-1标准编码能够轻易的实现,下面的代码实现了这一功能: byte [] b;String utf8_value; utf8_value = request.getParameter("NAME");//从HTTP流中取"NAME"的UTF8数据b = utf8_value.getBytes("8859_1"); //中间用ISO-8859-1过渡String name = new String(b, "GB2312"); //转换成GB2312字符这是我做的一个项目程序的一段: byte[] b; String gbk_value; gbk_value=request.getParameter("address");//从HTTP流中取"name"的GBK数据(由于web.xml中过滤器设置默认编码为GBK,所以外网从UTF-8变为GBK) b=gbk_value.getBytes("GBK");//中间用GBK过渡,从GBK转换成GBK数组 String address=new String(b,"utf-8");//转换成utf-8字符 myform.setAddress(address);在知道流长度的情况下将输入流转换成字节数组 Java中的输入流抽象类InputStream有int read(byte[] b, int off, int len)方法,参数中byte[] b是用来存放从InputStream中读取的数据,int off指定数组b的偏移地址,也就是数组b的起始下标,int len指定需要读取的长度,方法返回实际读取的字节数。刚学Java 的朋友可能要说:先定义一个与流长度等长的字节数组,调用read方法,指定起始下标为0,指定读取长度与数组长度等长,不是一下子可以读出来了吗?说的 没错,笔者曾经也试着这样读取数据,但后来发现在读取网络数据时很不安全,我们想想在网络上获取数据可能并没那么流畅,数据流的传送可能会断断续续,所以 并不能保证一次就能读取全部数据,特别是在读取大容量数据时更是如此,所以我们必须在读取数据时检测实际读到的长度,如果没有读完已知长度的数据就应该再 次读取,以此循环检测,直到实际读取的长度累加与已知的长度相等,下面的代码实现了这一功能: ServletInputStream inStream = request.getInputStream(); //取HTTP请求流int size = request.getContentLength(); //取HTTP请求流长度byte[] buffer = new byte[size]; //用于缓存每次读取的数据byte[] in_b = new byte[size]; //用于存放结果的数组int count = 0;int rbyte = 0;while (count < size) {//循环读取rbyte = inStream.read(buffer); //每次实际读取长度存于rbyte中for(int i=0;i在不知道流长度的情况下将输入流转换成字节数组 前面介绍了已知流长度的情况下的转换方法,那么当我们不知道流有多长时,也就是说不能确定转换后的字节数组有多大时,该怎么处理呢?笔者查看了JDK文档 之后发现ByteArrayOutputStream有一个byte[] toByteArray()方法,该方法会自动创建一个字节数组,然后返回。于是就巧妙的用ByteArrayOutputStream来作中间过渡实现 转换,其它处理跟上面所介绍已知长度的情况差不多。假设需要被转换的流已经放在inStream里了,我们可以用如下的代码实现这一功能:ByteArrayOutputStream swapStream = new ByteArrayOutputStream();byte[] buff = new byte[100]; //buff用于存放循环读取的临时数据int rc = 0;while ((rc = inStream.read(buff, 0, 100)) > 0) {swapStream.write(buff, 0, rc);}byte[] in_b = swapStream.toByteArray(); //in_b为转换之后的结果JSP 中 pageEncoding charset 的区别首先,说说JSP/Servlet中的几个编码的作用。 在JSP/Servlet中主要有以下几个地方可以设置编 码,pageEncoding="UTF-8"、contentType="text/html;charset=UTF-8"、request.setCharacterEncoding("UTF-8")和 response.setCharacterEncoding("UTF-8"),其中前两个只能用于JSP中,而后两个可以用于JSP和Servlet中。 1、pageEncoding="UTF-8"的作用是设置JSP编译成Servlet时使用的编码。 众所周知,JSP在服务 器上是要先被编译成Servlet的。pageEncoding="UTF-8"的作用就是告诉JSP编译器在将JSP文件编译成Servlet时使用的 编码。通常,在JSP内部定义的字符串(直接在JSP中定义,而不是从浏览器提交的数据)出现乱码时,很多都是由于该参数设置错误引起的。例如,你的 JSP文件是以GBK为编码保存的,而在JSP中却指定pageEncoding="UTF-8",就会引起JSP内部定义的字符串为乱码。 另外,该参数还有一个功能,就是在JSP中不指定contentType参数,也不使用response.setCharacterEncoding方法时,指定对服务器响应进行重新编码的编码。2、contentType="text/html;charset=UTF-8"的作用是指定对服务器响应进行重新编码的编码。 在不使用response.setCharacterEncoding方法时,用该参数指定对服务器响应进行重新编码的编码。3、request.setCharacterEncoding("UTF-8")的作用是设置对客户端请求进行重新编码的编码。 该方法用来指定对浏览器发送来的数据进行重新编码(或者称为解码)时,使用的编码。4、response.setCharacterEncoding("UTF-8")的作用是指定对服务器响应进行重新编码的编码。 服务器在将数据发送到浏览器前,对数据进行重新编码时,使用的就是该编码。 其次,要说一说浏览器是怎么样对接收和发送的数据进行编码的 response.setCharacterEncoding("UTF- 8")的作用是指定对服务器响应进行重新编码的编码。同时,浏览器也是根据这个参数来对其接收到的数据进行重新编码(或者称为解码)。所以在无论你在 JSP中设置response.setCharacterEncoding("UTF-8")或者 response.setCharacterEncoding("GBK"),浏览器均能正确显示中文(前提是你发送到浏览器的数据编码是正确的,比如正 确设置了pageEncoding参数等)。读者可以做个实验,在JSP中设置response.setCharacterEncoding("UTF- 8"),在IE中显示该页面时,在IE的菜单中选择"查看(V)"à"编码(D)"中可以查看到是" Unicode(UTF-8)",而在在JSP中设置response.setCharacterEncoding("GBK"),在IE中显示该页面 时,在IE的菜单中选择"查看(V)"à"编码(D)"中可以查看到是"简体中文(GB2312)"。 浏览器在发送数据时,对URL和参数会 进行URL编码,对参数中的中文,浏览器也是使response.setCharacterEncoding参数来进行URL编码的。以网络和 GOOGLE为例,如果你在网络中搜索"汉字",网络会将其编码为"%BA%BA%D7%D6"。而在GOOGLE中搜索"汉字",GOOGLE会将其编 码为"%E6%B1%89%E5%AD%97",这是因为网络的response.setCharacterEncoding参数为GBK,而 GOOGLE的的response.setCharacterEncoding参数为UTF-8。 浏览器在接收服务器数据和发送数据到服务器 时所使用的编码是相同的,默认情况下均为JSP页面的response.setCharacterEncoding参数(或者contentType和pageEncoding参数),我们称其为浏览器编码。当然,在IE中可以修改浏览器编码(在IE的菜单中选择"查看(V)"à"编码(D)"中修 改),但通常情况下,修改该参数会使原本正确的页面中出现乱码。一个有趣的例子是,在IE中浏览GOOGLE的主页时,将浏览器编码修改为"简体中文 (GB2312)",此时,页面上的中文会变成乱码,不理它,在文本框中输入"汉字",提交,GOOGLE会将其编码为"%BA%BA%D7%D6",可 见,浏览器在对中文进行URL编码时,使用的就是浏览器编码。 弄清了浏览器是在接收和发送数据时,是如何对数据进行编码的了,我们再来看看服务器是在接收和发送数据时,是如何对数据进行编码的。 对于发送数据,服务器按照response.setCharacterEncoding—contentType—pageEncoding的优先顺序,对要发送的数据进行编码。 对于接收数据,要分三种情况。一种是浏览器直接用URL提交的数据,另外两种是用表单的GET和POST方式提交的数据。 因为各种WEB服务器对这三种方式的处理也不相同,所以我们以Tomcat5.0为例。 无论使用那种方式提交,如果参数中包含中文,浏览器都会使用当前浏览器编码对其进行URL编码。 对于表单中POST方式提交的数据,只要在接收数据的JSP中正确request.setCharacterEncoding参数,即将对客户端请求进行重 新编码的编码设置成浏览器编码,就可以保证得到的参数编码正确。有写读者可能会问,那如何得到浏览器编码呢?上面我们提过了,在默认请情况下,浏览器编码 就是你在响应该请求的JSP页面中response.setCharacterEncoding设置的值。所以对于POST表单提交的数据,在获得数据的 JSP页面中request.setCharacterEncoding要和生成提交该表单的JSP页面的 response.setCharacterEncoding设置成相同的值。 对于URL提交的数据和表单中GET方式提交的数据,在接收数 据的JSP中设置request.setCharacterEncoding参数是不行的,因为在Tomcat5.0中,默认情况下使用ISO- 8859-1对URL提交的数据和表单中GET方式提交的数据进行重新编码(解码),而不使用该参数对URL提交的数据和表单中GET方式提交的数据进行 重新编码(解码)。要解决该问题,应该在Tomcat的配置文件的Connector标签中设置useBodyEncodingForURI或者 URIEncoding属性,其中useBodyEncodingForURI参数表示是否用request.setCharacterEncoding 参数对URL提交的数据和表单中GET方式提交的数据进行重新编码,在默认情况下,该参数为false(Tomcat4.0中该参数默认为 true);URIEncoding参数指定对所有GET方式请求(包括URL提交的数据和表单中GET方式提交的数据)进行统一的重新编码(解码)的编 码。URIEncoding和useBodyEncodingForURI区别是,URIEncoding是对所有GET方式的请求的数据进行统一的重新 编码(解码),而useBodyEncodingForURI则是根据响应该请求的页面的request.setCharacterEncoding参数 对数据进行的重新编码(解码),不同的页面可以有不同的重新编码(解码)的编码。所以对于URL提交的数据和表单中GET方式提交的数据,可以修改 URIEncoding参数为浏览器编码或者修改useBodyEncodingForURI为true,并且在获得数据的JSP页面中 request.setCharacterEncoding参数设置成浏览器编码。下面总结下,以Tomcat5.0为WEB服务器时,如何防止中文乱码。 1、对于同一个应用,最好统一编码,推荐为UTF-8,当然GBK也可以。 2、正确设置JSP的pageEncoding参数 3、在所有的JSP/Servlet中设置contentType="text/html;charset=UTF-8"或response.setCharacterEncoding("UTF-8"),从而间接实现对浏览器编码的设置。 4、 对于请求,可以使用过滤器或者在每个JSP/Servlet中设置request.setCharacterEncoding("UTF-8")。同时, 要修改Tomcat的默认配置,推荐将useBodyEncodingForURI参数设置为true,也可以将URIEncoding参数设置为 UTF-8(有可能影响其他应用,所以不推荐)。<%@ page contentType="text/html;charset=GB2312"%>设置文档类型, text/html;charset=GB2312 代表是文本类型的html文件, 字符集编码是GB2312。<%@ page contentType="text/html;charset=GB2312" pageEncoding="GB2312"%>pageEncoding也是设置页面编码的这个跟页面中文乱码有直接关系比如你使用默认编码:<%@ page contentType="text/html;charset=ISO-8859-1"%>而你在页面中输出了中文,那么中文就会因为编码错误而乱码。解决办法是改成GB2312 或者 UTF-8 或者 GBK
㈧ @webservice 注解 怎么设置content-type
一般都有默认扩展名对应的Content-type,大部分的服务器软件都有MIME的映射关系如果代码里面设置了Content-Type则使用代码里设置的,否则就使用映射表里的,如果扩展名不再映射表里,则使用默认的,一般为application/octet-stream的类型
㈨ 如何设置Response中的ContentType
ajax开发中, 常遇到下面的几种情况:1 服务端需要返回一段普通文本给客户端 2 服务端需要返回一段HTML代码给客户端 3 服务端需要返回一段XML代码给客户端 4 服务端需要返回一段javascript代码给客户端 5 服务端需要返回一段json串给客户端================================对于每一种返回类型 规范的做法是要在服务端指定 response的contentType 的. (当然 不指定绝大多数情况下也没什么问题 尤其是返回"非xml"的时候) 1. 普通文本 : text/plain 2. HTML代码 : text/html 3. XML代码 : text/xml 以上三个可以说是毫无争议的, 也没什么值得讨论的, 但是另外两种情况 就要注意一下了.javascript 的 contentType 按最标准的写法 应该是 application/javascript. 而常用的 text/javascript 已经被 rfc定义为废弃的. (参见 rfc4329)但是 在这里暂时不建议使用 application/javascript . 大家还是继续使用 text/javascript 为好. 因为很多老旧浏览器并不支持 application/javascript . 而所有浏览器都支持 text/javascript. 在标准和广泛的兼容性之间 还是暂且选择后者吧.json 的 contentType 常见写法有 : text/json & text/javascript . 但是 这个 text/json 其实是根本不存在的, 而 text/javascript 在有些时候客户端处理起来会有歧义. 对于json的contentType , rfc里定义的标准写法是 :application/json. (参见 rfc4627)在这里毫无疑问 我们应该选择标准写法的 application/json.====================== 也许有人会问, 设置这些有什么用呢? 以前一些程序没有设置这些东西 运行的也很好啊.首先必须承认的一点是, 这些信息 在目前绝大多数情况下 确实不设置也可以. 但是这种做法是不规范不标准的.未来对于复杂的ajax应用 ,不规范的行为是会带来很大的隐患.举个例子.对于同样的内容 可以有下面的3种形式html形式 Html代码 1. <script type="text/javascript"> 2. var user = { 3. name : "Tom", 4. age : 12 5. }; 6. </script> 对于 html 形式,客户端得到数据后,往往是对其做dom操作.javascript形式 Javascript代码 1. var user = { 2. name : "Tom", 3. age : 12 4. ; 对于 javascript形式,往往是对其做eval操作: eval(responseText);json形式 1. { 2. name : "Tom", 3. age : 12 对于 json形式,往往是对其做 eval操作之后 赋值给某变量: var clientVar= eval(responseText);客户端拿到不同形式的代码 所要做的工作是不一样的. 如果没有设置 contentType 客户端很难判断 返回的数据是什么, 该怎么处理.==========================另外,对于返回信息,如果不设置contentType,web服务器往往会给返回的内容添加一个"默认的contentType", 但是这个"默认"会根据服务器的不同 以及web应用配置的不同而不同.而浏览器对于没有足够头信息的返回值 也会做出"某些默认行为(打开 或下载 或报错". 总之 不同浏览器 不同的浏览器设置 结果可能是不一样的 无法把控.也就是说 当我们不指定正确的contentType时, 我们所能做的只能是祈祷 在所有环境中, 程序的表现是一致的, 但是与其"祈祷"不如我们亲自把这些信息加上来得可靠.所以 正确设置返回信息的 contentType 还是很有必要的.====================== 总结 & 建议 : 1.服务端 向 客户端 发送 JSON数据 时: Content-Type = 'application/json;charset=UTF-8'2. 服务端 向 客户端 发送 JS 代码 时: Content-Type = 'text/javascript;charset=UTF-8'3 服务端 判断 客户端 提交的是否是 JSON数据 时 :Content-Type = 'application/json;charset=UTF-8' Content-Type = 'text/json;charset=UTF-8' Content-Type = 'text/javascript;charset=UTF-8' Content-Type = 'application/javascript;charset=UTF-8'只要 Content-Type 满足上面4个条件中的 任意一个时,就可以认为提交的数据是 JSON数据. 之所以要提供4种选择 是因为 为了提供更好的兼容性. (我想没有人会提交真正的js代码到服务端 然后用服务端js引擎去解析执行吧? 即使真有这种需求 也可以在js代码外包一层 json格式的 wrapper , 所以姑且都当作json处理应该没什么问题)
㈩ 哪里设置页面自动包含Content-Type
Http Header里的Content-Type一般有这三种:application/x-www-form-urlencoded:数据被编码为名称/值对。这是标准的编码格式。multipart/form-data: 数据被编码为一条消息,页上的每个控件对应消息中的一个部分。text/plain: 数据以纯文本形式(text/json/xml/html)进行编码,其中不含任何控件或格式字符。postman软件里标的是RAW。