HTTP
RESTful
REST 指的是一組架構約束條件和原則。滿足這些約束條件和原則的應用程序或設計就是 RESTful。
- GET
get方法在Rest中主要用於獲取資源,能夠發送參數,不過有限制,且參數都會以?開頭的形 式附加在URL尾部。
規範的get方法處理器應該是冪等的,也就是說對一個資源不論發送多少次get請求都不會更改數據或造成破壞。 - POST
post方法在Rest請求中主要用於添加資源,參數信息存放在請求報文的消息體中相對安全,且可發送較大信息 - PUT
put方法在Rest中主要用於更新資源,因爲大多數瀏覽器不支持put和delete,會自動將put和delete請求轉化爲get和post. 因此爲了使用put和delete方法,
需要以post發送請求,在表單中使用隱藏域發送真正的請求。
put方法的參數是同post一樣是存放在消息中的,同樣具有安全性,可發送較大信息。
put方法是冪等的,對同一URL資源做出的同一數據的任意次put請求其對數據的改變都是一致的。 - DELETE
Delete在Rest請求中主要用於刪除資源,因爲大多數瀏覽器不支持put和delete,會自動將put和delete請求轉化爲get和post。
因此爲了使用put和delete方法,需要以post發送請求,在表單中使用隱藏域發送真正的請求。
Delete方法的參數同post一樣存放在消息體中,具有安全性,可發送較大信息 Delete方法是冪等的,不論對同一個資源進行多少次delete請求都不會破壞數據
https://blog.csdn.net/jnshu_it/article/details/80203696
GET和POST的區別
- GET產生一個TCP數據包;POST產生兩個TCP數據包。
- GET在瀏覽器回退時是無害的,而POST會再次提交請求。
- GET產生的URL地址可以被Bookmark,而POST不可以。
- GET請求會被瀏覽器主動cache,而POST不會,除非手動設置。
- GET請求只能進行url編碼,而POST支持多種編碼方式。
- GET請求參數會被完整保留在瀏覽器歷史記錄裏,而POST中的參數不會被保留。
- GET請求在URL中傳送的參數是有長度限制的,而POST麼有。
- 對參數的數據類型,GET只接受ASCII字符,而POST沒有限制。
- GET比POST更不安全,因爲參數直接暴露在URL上,所以不能用來傳遞敏感信息。
- GET參數通過URL傳遞,POST放在Request body中。
Accept和Content-Type
Accept 請求頭用來告知客戶端可以處理的內容類型,這種內容類型用MIME類型來表示。
服務器使用 Content-Type 應答頭通知客戶端它的選擇。
Accept: text/html
Accept: image/*
Accept: text/html, application/xhtml+xml, application/xml;q=0.9, */*;q=0.8
1.Accept屬於請求頭, Content-Type屬於實體頭。
Http報頭分爲通用報頭,請求報頭,響應報頭和實體報頭。
請求方的http報頭結構:通用報頭|請求報頭|實體報頭
響應方的http報頭結構:通用報頭|響應報頭|實體報頭
2.Accept代表發送端(客戶端)希望接受的數據類型。
比如:Accept:text/xml;
代表客戶端希望接受的數據類型是xml類型
Content-Type代表發送端(客戶端|服務器)發送的實體數據的數據類型。
比如:Content-Type:text/html;
代表發送端發送的數據格式是html。
二者合起來,
Accept:text/xml;
Content-Type:text/html
即代表希望接受的數據類型是xml格式,本次請求發送的數據的數據格式是html。
狀態碼
狀態碼 | 類別 | 描述 |
---|---|---|
1xx | Informational(信息狀態碼) | 接受請求正在處理 |
2xx | Success(成功狀態碼) | 請求正常處理完畢 |
3xx | Redirection(重定向狀態碼) | 需要附加操作已完成請求 |
4xx | Client Error(客戶端錯誤狀態碼) | 服務器無法處理請求 |
5xx | Server Error(服務器錯誤狀態碼) | 服務器處理請求出錯 |
HTTP緩存
https://segmentfault.com/a/1190000010690320
如何處理不讓別人盜用你的圖片,訪問你的服務器資源
- http header, 對refer做判斷看來源是不是自己的網站,如果不是就拒絕
- 通過session校驗,如果不通過特定服務生成cookie和session就不能請求得到資源