HTTP協議介紹(POST、GET、Content-Type)

什麼是HTTP?
超文本傳輸協議(HyperText Transfer Protocol -- HTTP)是一個設計來使客戶端和服務器順利進行通信的協議。
HTTP/1.1 協議規定的 HTTP 請求方法有 OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT 這幾種。html

GET 請求響應web

GET請求會顯示請求指定的資源。通常來講GET方法應該只用於數據的讀取。 GET會方法請求指定的頁面信息,並返回響應主體,GET被認爲是不安全的方法,由於GET方法會被網絡蜘蛛等任意的訪問。 使用GET方法時,查詢字符串(鍵值對)被附加在URL地址後面一塊兒發送到服務器: /test/demoform.html?name1=value1&name2=value2 特色: GET請求可以被緩存 GET請求會保存在瀏覽器的瀏覽記錄中 以GET請求的URL可以保存爲瀏覽器書籤 GET請求有長度限制 GET請求主要用以獲取數據

POST 發送數據給服務器處理json

POST 發送數據給服務器處理,數據包含在HTTP信息正文中 POST請求會向指定資源提交數據,請求服務器進行處理,如:表單數據提交、文件上傳等,請求數據會被包含在請求體中。 POST方法可能會建立新的資源或/和修改現有資源。 使用POST方法時,查詢字符串在POST信息中單獨存在,和HTTP請求一塊兒發送到服務器: POST /test/demoform.html HTTP/1.1 Host: w3schools.com name1=value1&name2=value2 特色: POST請求不能被緩存下來 POST請求不會保存在瀏覽器瀏覽記錄中 以POST請求的URL沒法保存爲瀏覽器書籤 POST請求沒有長度限制

HEAD 與GET相同的響應,只要求響應表頭跨域

HEAD 與GET相同的響應,只要求響應表頭
HEAD方法與GET方法同樣,都是向服務器發出指定資源的請求。可是,服務器在響應HEAD請求時不會回傳資源的內容部分,即:響應主體。
這樣,咱們能夠不傳輸所有內容的狀況下,就能夠獲取服務器的響應頭信息。HEAD方法常被用於客戶端查看服務器的性能。

PUT 上傳文件。數組

PUT請求會身向指定資源位置上傳其最新內容,PUT方法是冪等的方法。經過該方法客戶端能夠將指定資源的最新數據傳送給服務器取代指定的資源的內容。

DELETE 刪除文件瀏覽器

DELETE請求用於請求服務器刪除所請求URI(統一資源標識符,Uniform Resource Identifier)所標識的資源。
DELETE請求後指定資源會被刪除,DELETE方法也是冪等的。

CONNECT 將HTTP請求的鏈接轉換成透明的TCP/IP通道緩存

CONNECT方法是HTTP/1.1協議預留的,可以將鏈接改成管道方式的代理服務器。一般用於SSL加密服務器的連接與非加密的HTTP代理服務器的通訊。

TRACE 追蹤收到的請求安全

TRACE請求服務器回顯其收到的請求信息,該方法主要用於HTTP請求的測試或診斷。

OPTIONS 返回服務器所支持的HTTP請求的方法服務器

OPTIONS請求與HEAD相似,通常也是用於客戶端查看服務器的性能。 這個方法會請求服務器返回該資源所支持的全部HTTP請求方法,該方法會用'*'來代替資源名稱,向服務器發送OPTIONS請求,能夠測試服務器功能是否正常。 JavaScript的XMLHttpRequest對象進行CORS跨域資源共享時,就是使用OPTIONS方法發送嗅探請求,以判斷是否有對指定資源的訪問權限。 

這裏還有一種架構風格:RESTful。REST(英文:Representational State Transfer,簡稱REST)描述了一個架構樣式的網絡系統,好比 web 應用程序。
REST 指的是一組架構約束條件和原則。知足這些約束條件和原則的應用程序或設計就是 RESTful。網絡

HTTP 協議是以 ASCII 碼傳輸,創建在 TCP/IP 協議之上的應用層規範。 規範把 HTTP 請求分爲三個部分:狀態行、請求頭、消息主體。相似於下面這樣: <method> <request-URL> <version>
<headers>
<entity-body> 數據使用什麼編碼方式,開發者徹底能夠本身決定消息主體的格式,只要最後發送的 HTTP 請求知足上面的格式就能夠。 可是,數據發送出去,還要服務端解析成功纔有意義。 服務端一般是根據請求頭(headers)中的 Content-Type 字段來獲知請求中的消息主體是用何種方式編碼,再對主體進行解析。

Form中常見的enctype 屬性

application/x-www-form-urlencoded 瀏覽器的原生 <form> 表單,若是不設置 enctype 屬性,那麼最終就會以 application/x-www-form-urlencoded 方式提交數據。 提交的數據按照 key1=val1&key2=val2 的方式進行編碼,key 和 val 都進行了 URL 轉碼。 multipart/form-data 瀏覽器的原生 <form> 表單,須要設置 enctype 屬性,表單上傳文件時,必須讓 <form> 表單的 enctyped 等於 multipart/form-data。

Ajax中常見的Content-Type

application/json 用來告訴服務端消息主體是序列化後的 JSON 字符串。 JSON.stringify(str);//將JSON對象轉化爲JSON字符
JSON.parse(str); //由JSON字符串轉換爲JSON對象
JSON 對象 var user = { "firstName":"Jason" , "lastName":"Hua" } user.firstName //訪問數據
JSON 數組 var department = { "employees": [ { "firstName":"Jason" , "lastName":"Hua" }, { "firstName":"Jason" , "lastName":"Hua" } ], "department": "Dev" } department.employees[0].firstName //訪問數據

Http  Content-Type對照表:http://tool.oschina.net/commons

相關文章
相關標籤/搜索