Http中Content-Type的取值講解

1、Content-Type的取值php

在Http請求中,咱們天天都在使用Content-type來指定不一樣格式的請求信息(MediaType,便是Internet Media Type,互聯網媒體類型;也叫作MIME類型,在Http協議消息頭中,使用Content-Type來表示具體請求中的媒體類型信息),可是卻不多有人去全面瞭解content-type中容許的值有多少,這裏將講解Content-Type的可用值:html

  1. 常見的媒體格式類型:Content-Type: text/html;charset:utf-8;
    • text/html : HTML格式
    • text/plain :純文本格式   
    • text/xml :  XML格式
    • image/gif :gif圖片格式
    • image/jpeg :jpg圖片格式 
    • image/png:png圖片格式

        2. 以application開頭的媒體格式類型:json

    • application/json    : JSON數據格式
    •    application/pdf       :pdf格式  
    •    application/msword  : Word文檔格式
    •    application/octet-stream : 二進制流數據(如常見的文件下載)
    •    application/x-www-form-urlencoded : <form encType=」」>中默認的encType,form表單數據被編碼爲key/value格式發送到服務器(表單默認的提交數據的格式),應用於表單
    •    application/xhtml+xml :XHTML格式
    •    application/xml     : XML數據格式
    •    application/atom+xml  :Atom XML聚合格式   

        3. 當在表單中須要上傳文件的時候,使用的媒體格式類型是:multipart/form-data瀏覽器

2、四種常見的POST提交數據方式的媒體格式類型詳解服務器

一、application/jsonapp

 

  •   application/json 這個 Content-Type 做爲響應頭你們確定不陌生。實際上,如今愈來愈多的人把它做爲請求頭,用來告訴服務端消息主體是序列化後的 JSON 字符串。因爲 JSON 規範的流行,除了低版本 IE 以外的各大瀏覽器都原生支持 JSON.stringify,服務端語言也都有處理 JSON 的函數,使用 JSON 不會趕上什麼麻煩。 
  •   JSON 格式支持比鍵值對複雜得多的結構化數據,這一點也頗有用。記得我幾年前作一個項目時,須要提交的數據層次很是深,我就是把數據 JSON 序列化以後來提交的。不過當時我是把 JSON 字符串做爲 val,仍然放在鍵值對裏,以 x-www-form-urlencoded 方式提交。 
  •   Google 的 AngularJS 中的 Ajax 功能,默認就是提交 JSON 字符串(固然 AngularJS 也能夠配置爲使用 x-www-form-urlencoded 方式提交數據 )。例以下面這段代碼: 
    var data = {'title':'test', 'sub' : [1,2,3]}; 
    $http.post(url, data).success(function(result) { 
        ... 
    }); 

  最終發送的請求是: 

  POST http://www.example.com HTTP/1.1 
  Content-Type: application/json;charset=utf-8 
  {"title":"test","sub":[1,2,3]} 
  這種方案,能夠方便的提交複雜的結構化數據,特別適合 RESTful 的接口。各大抓包工具如 Chrome 自帶的開發者工具、Firebug、Fiddler,都會以樹形結構展現 JSON 數據,很是友好。但也有些服務端語言尚未支持這種方式,例如 php 就沒法經過 $_POST 對象從上面的請求中得到內容。這時候,須要本身動手處理下:在請求頭中 Content-Type 爲 application/json 時,從 php://input 裏得到原始輸入流,再 json_decode 成對象。一些 php 框架已經開始這麼作了。 
框架

 

二、application/x-www-form-urlencoded(Content-Type: application/x-www-form-urlencoded;charset=utf-8 )函數

  這應該是最多見的 POST 提交數據的方式了。瀏覽器的原生 form 表單,若是不設置 encType 屬性,那麼最終就會以 application/x-www-form-urlencoded 方式提交數據;工具

  •   首先,Content-Type 被指定爲 application/x-www-form-urlencoded;
  •   其次,提交的數據按照 key1=val1&key2=val2 的方式進行編碼,key 和 val 都進行了 URL 轉碼;

三、multipart/form-datapost

  當使用表單上傳文件時,必須設置encType屬性爲這個請求頭,下面是一個請求示例的network截圖:

上面提到的兩種表單方式都是瀏覽器原生支持的,並且現階段原生 form 表單也只支持這兩種方式。可是隨着愈來愈多的 Web 站點,尤爲是 WebApp,所有使用 Ajax 進行數據交互以後,咱們徹底能夠定義新的數據提交方式,給開發帶來更多便利。

 四、text/xml 

  還沒有使用,如遇到的話會持續進行更新

3、參考資料

http://www.javashuo.com/article/p-hbtlzotf-bw.html

相關文章
相關標籤/搜索