response.contenttype(response的contentType 几种类型)
一、如何设置Response中的ContentType
ajax开发中,常遇到下面的几种情况: 1服务端需要返回一段普通文本给客户端 2服务端需要返回一段HTML代码给客户端 3服务端需要返回一段XML代码给客户端 4服务端需要返回一段javascript代码给客户端 5服务端需要返回一段json串给客户端================================对于每一种返回类型规范的做法是要在服务端指定 response的contentType的.(当然不指定绝大多数情况下也没什么问题尤其是返回"非xml"的时候) Java代码复制代码 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处理应该没什么问题)
二、“response”的“contentType” 几种类型是什么
ajax开发中在请求服务器端的响应时,对于每一种返回类型规范的做法是要在服务端指定response的contentType\x0d\x0a常遇到下面的几种情况:\x0d\x0a1、服务端需要返回一段普通文本给客户端,Content-Type="text/plain"\x0d\x0a2、服务端需要返回一段HTML代码给客户端,Content-Type="text/html"\x0d\x0a3、服务端需要返回一段XML代码给客户端,Content-Type="text/xml"\x0d\x0a4、服务端需要返回一段javascript代码给客户端\x0d\x0a5、服务端需要返回一段json串给客户端\x0d\x0a我们主要讨论返回javascript代码和Json对象的情况。\x0d\x0ajavascript的 contentType按最标准的写法应该是 application/javascript。而常用的\x0d\x0atext/javascript已经被 rfc定义为废弃的。\x0d\x0a但是在这里暂时不建议使用 application/javascript.大家还是继续使用 text/javascript\x0d\x0a为好.因为很多老旧浏览器并不支持 application/javascript.\x0d\x0a而所有浏览器都支持text/javascript.在标准和广泛的兼容性之间还是暂且选择后者吧。\x0d\x0ajson的 contentType常见写法有: text/json&\x0d\x0atext/javascript.\x0d\x0a但是这个 text/json其实是根本不存在的,而 text/javascript在有些时候客户端处理起来会有歧义.\x0d\x0a对于json的contentType, rfc里定义的标准写法是:application/json.\x0d\x0a在这里毫无疑问我们应该选择标准写法的 application/Json。
三、Response Contenttype属性 指定MIME类型可以做什么
//
//摘要:
//获取或设置输出流的 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类型就是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。