HTTP和HTTPS
HTTP與HTTPS
HTTPS
HTTP傳輸數(shù)據(jù)是明文的不安全
各種加密的不安全
明文=裸奔
對稱加密:key唯一=明文
非對稱加密:s->c的數(shù)據(jù)不安全
對稱加密+非對稱加密:中間人問題,不安全
最終通過對稱加密+非對稱加密+CA認(rèn)證
實(shí)現(xiàn)了安全的數(shù)據(jù)傳輸
原理如圖
超文本傳輸協(xié)議](https://baike.baidu.com/item/超文本傳輸協(xié)議/8535513)(HTTP,HyperText Transfer Protocol)是互聯(lián)網(wǎng)上應(yīng)用最為廣泛的一種網(wǎng)絡(luò)協(xié)議。
URL 是統(tǒng)一資源定位符
四大特性:
1.基于tcp/ip之上作用于應(yīng)用層
2.基于socket的請求響應(yīng)
3.無狀態(tài)(不保存用戶狀態(tài))
4.無連接 一旦數(shù)據(jù)交互完成就斷開連接
(長連接(聊天websocket) 短連接)
報(bào)文格式
請求
? 請求行 GET /index.html HTTP/1.1(請求方法,請求URL,HTTP協(xié)議及版本)
? 請求頭 報(bào)文頭包含若干個(gè)屬性,格式為“屬性名:屬性值”,服務(wù)端據(jù)此獲取客戶端的信息。
? /r/n/r/n 空一行
? 請求體(一般get沒有,post有,用來存放請求參數(shù))
響應(yīng)
? 響應(yīng)行 HTTP/1.1 200 OK (報(bào)文協(xié)議及版本,狀態(tài)碼及狀態(tài)描述)
? 響應(yīng)頭 (告訴客戶端的一些鍵值對)
? /r/n/r/n 空一行
? 響應(yīng)體 返回給客戶端真正的內(nèi)容
tcp公用的 看一下
GET和POST的區(qū)別:
1、GET提交的數(shù)據(jù)會放在URL之后,以?分割URL和傳輸數(shù)據(jù),參數(shù)之間以&相連,如EditPosts.aspx?name=test1&id=123456. POST方法是把提交的數(shù)據(jù)放在HTTP包的Body中。
2、GET提交的數(shù)據(jù)大小有限制,最多只能有1024字節(jié)(因?yàn)闉g覽器對URL的長度有限制),而POST方法提交的數(shù)據(jù)沒有限制。
3、GET方式需要使用Request.QueryString來取得變量的值,而POST方式通過Request.Form來獲取變量的值。
4、GET方式提交數(shù)據(jù),會帶來安全問題,比如一個(gè)登錄頁面,通過GET方式提交數(shù)據(jù)時(shí),用戶名和密碼將出現(xiàn)在URL上,如果頁面可以被緩存或者其他人可以訪問這臺機(jī)器,就可以從歷史記錄獲得該用戶的賬號和密碼
Cookie, Session
cookie和session都是為了彌補(bǔ)http協(xié)議的無狀態(tài)特性,對server端來說無法知道兩次http請求是否來自同一個(gè)用戶,利用cookie和session就可以讓用戶只登錄一次,server就知道某個(gè)請求是否需用重新登錄。
1.cookie:客戶端第一次正常訪問服務(wù)器,服務(wù)器在response headers中返回與用戶信息相關(guān)的cookie,客戶端收到后把cookie保存在本地,下次再發(fā)請求時(shí)會在request headers中帶上這個(gè)cookie,服務(wù)器收到這個(gè)cookie就知道用戶狀態(tài)了。cookie可以設(shè)置過期時(shí)間,默認(rèn)值是-1,表示關(guān)閉瀏覽器時(shí)cookie就會失效,值為0時(shí)表示立馬失效,相當(dāng)于刪除cookie(cookie沒有刪除的方法),服務(wù)器和客戶端都可以設(shè)置cookie,但不可以操作另一個(gè)域名下的cookie。
2.session: 客戶端第一次正常訪問服務(wù)器,服務(wù)器生成一個(gè)sessionid來標(biāo)識用戶并保存用戶信息(服務(wù)器有一個(gè)專門的地方來保存所有用戶的sessionId),在response headers中作為cookie的一個(gè)值返回,客戶端收到后把cookie保存在本地,下次再發(fā)請求時(shí)會在request headers中帶上這個(gè)sessionId,服務(wù)器通過查找這個(gè)sessionId就知道用戶狀態(tài)了,并更新sessionId的最后訪問時(shí)間。sessionId也會可以設(shè)置失效時(shí)間,比如如果60分鐘內(nèi)某個(gè)session都沒有被更新,服務(wù)器就會刪除這個(gè)它。
總言之cookie是保存在客戶端,session是存在服務(wù)器,session依賴于cookie。
http響應(yīng)狀碼
用特定數(shù)字表示,服務(wù)器的狀態(tài)
1xx 消息,一般是告訴客戶端,請求已經(jīng)收到了,正在處理,別急...
2xx 處理成功,一般表示:請求收悉、我明白你要的、請求已受理、已經(jīng)處理完成等信息.
3xx 重定向到其它地方。它讓客戶端再發(fā)起一個(gè)請求以完成整個(gè)處理。
4xx 處理發(fā)生錯(cuò)誤,責(zé)任在客戶端,如客戶端的請求一個(gè)不存在的資源,客戶端未被授權(quán),禁止訪問等。
5xx 處理發(fā)生錯(cuò)誤,責(zé)任在服務(wù)端,如服務(wù)端拋出異常,路由出錯(cuò),HTTP版本不支持等。
1**(信息類):表示接收到請求并且繼續(xù)處理
| 100 Continue | 服務(wù)器僅接收到部分請求,但是一旦服務(wù)器并沒有拒絕該請求,客戶端應(yīng)該繼續(xù)發(fā)送其余的請求。 |
|---|---|
| 101 Switching Protocols | 服務(wù)器轉(zhuǎn)換協(xié)議:服務(wù)器將遵從客戶的請求轉(zhuǎn)換到另外一種協(xié)議。 |
2**(響應(yīng)成功):表示動作被成功接收、理解和接受
| 200 OK | 請求成功(其后是對GET和POST請求的應(yīng)答文檔。) |
|---|---|
| 201 Created | 請求被創(chuàng)建完成,同時(shí)新的資源被創(chuàng)建。 |
| 202 Accepted | 供處理的請求已被接受,但是處理未完成。 |
| 203 Non-authoritative Information | 文檔已經(jīng)正常地返回,但一些應(yīng)答頭可能不正確,因?yàn)槭褂玫氖俏臋n的拷貝。 |
| 204 No Content | 沒有新文檔。瀏覽器應(yīng)該繼續(xù)顯示原來的文檔。如果用戶定期地刷新頁面,而Servlet可以確定用戶文檔足夠新,這個(gè)狀態(tài)代碼是很有用的。 |
| 205 Reset Content | 沒有新文檔。但瀏覽器應(yīng)該重置它所顯示的內(nèi)容。用來強(qiáng)制瀏覽器清除表單輸入內(nèi)容。 |
| 206 Partial Content | 客戶發(fā)送了一個(gè)帶有Range頭的GET請求,服務(wù)器完成了它。 |
3**(重定向類):為了完成指定的動作,必須接受進(jìn)一步處理
| 消息 | 描述 |
|---|---|
| 300 Multiple Choices | 多重選擇。鏈接列表。用戶可以選擇某鏈接到達(dá)目的地。最多允許五個(gè)地址。 |
| 301 Moved Permanently | 所請求的頁面已經(jīng)轉(zhuǎn)移至新的url。 |
| 302 Found | 所請求的頁面已經(jīng)臨時(shí)轉(zhuǎn)移至新的url。 |
| 303 See Other | 所請求的頁面可在別的url下被找到。 |
| 304 Not Modified | 未按預(yù)期修改文檔??蛻舳擞芯彌_的文檔并發(fā)出了一個(gè)條件性的請求(一般是提供If-Modified-Since頭表示客戶只想比指定日期更新的文檔)。服務(wù)器告訴客戶,原來緩沖的文檔還可以繼續(xù)使用。 |
| 305 Use Proxy | 客戶請求的文檔應(yīng)該通過Location頭所指明的代理服務(wù)器提取。 |
| 306 Unused | 此代碼被用于前一版本。目前已不再使用,但是代碼依然被保留。 |
| 307 Temporary Redirect | 被請求的頁面已經(jīng)臨時(shí)移至新的url。 |
4**(客戶端錯(cuò)誤類):請求包含錯(cuò)誤語法或不能正確執(zhí)行
| 消息 | 描述 |
|---|---|
| 400 Bad Request | 服務(wù)器未能理解請求。 |
| 401 Unauthorized | 被請求的頁面需要用戶名和密碼。 |
| 401.1 | 登錄失敗。 |
| 401.2 | 服務(wù)器配置導(dǎo)致登錄失敗。 |
| 401.3 | 由于 ACL 對資源的限制而未獲得授權(quán)。 |
| 401.4 | 篩選器授權(quán)失敗。 |
| 401.5 | ISAPI/CGI 應(yīng)用程序授權(quán)失敗。 |
| 401.7 | 訪問被 Web 服務(wù)器上的 URL 授權(quán)策略拒絕。這個(gè)錯(cuò)誤代碼為 IIS 6.0 所專用。 |
| 402 Payment Required | 此代碼尚無法使用。 |
| 403 Forbidden | 對被請求頁面的訪問被禁止。 |
| 403.1 | 執(zhí)行訪問被禁止。 |
| 403.2 | 讀訪問被禁止。 |
| 403.3 | 寫訪問被禁止。 |
| 403.4 | 要求 SSL。 |
| 403.5 | 要求 SSL 128。 |
| 403.6 | IP 地址被拒絕。 |
| 403.7 | 要求客戶端證書。 |
| 403.8 | 站點(diǎn)訪問被拒絕。 |
| 403.9 | 用戶數(shù)過多。 |
| 403.10 | 配置無效。 |
| 403.11 | 密碼更改。 |
| 403.12 | 拒絕訪問映射表。 |
| 403.13 | 客戶端證書被吊銷。 |
| 403.14 | 拒絕目錄列表。 |
| 403.15 | 超出客戶端訪問許可。 |
| 403.16 | 客戶端證書不受信任或無效。 |
| 403.17 | 客戶端證書已過期或尚未生效。 |
| 403.18 | 在當(dāng)前的應(yīng)用程序池中不能執(zhí)行所請求的 URL。這個(gè)錯(cuò)誤代碼為 IIS 6.0 所專用。 |
| 403.19 | 不能為這個(gè)應(yīng)用程序池中的客戶端執(zhí)行 CGI。這個(gè)錯(cuò)誤代碼為 IIS 6.0 所專用。 |
| 403.20 | Passport 登錄失敗。這個(gè)錯(cuò)誤代碼為 IIS 6.0 所專用。 |
| 404 Not Found | 服務(wù)器無法找到被請求的頁面。 |
| 404.0 | (無)–沒有找到文件或目錄。 |
| 404.1 | 無法在所請求的端口上訪問 Web 站點(diǎn)。 |
| 404.2 | Web 服務(wù)擴(kuò)展鎖定策略阻止本請求。 |
| 404.3 | MIME 映射策略阻止本請求。 |
| 405 Method Not Allowed | 請求中指定的方法不被允許。 |
| 406 Not Acceptable | 服務(wù)器生成的響應(yīng)無法被客戶端所接受。 |
| 407 Proxy Authentication Required | 用戶必須首先使用代理服務(wù)器進(jìn)行驗(yàn)證,這樣請求才會被處理。 |
| 408 Request Timeout | 請求超出了服務(wù)器的等待時(shí)間。 |
| 409 Conflict | 由于沖突,請求無法被完成。 |
| 410 Gone | 被請求的頁面不可用。 |
| 411 Length Required | "Content-Length" 未被定義。如果無此內(nèi)容,服務(wù)器不會接受請求。 |
| 412 Precondition Failed | 請求中的前提條件被服務(wù)器評估為失敗。 |
| 413 Request Entity Too Large | 由于所請求的實(shí)體的太大,服務(wù)器不會接受請求。 |
| 414 Request-url Too Long | 由于url太長,服務(wù)器不會接受請求。當(dāng)post請求被轉(zhuǎn)換為帶有很長的查詢信息的get請求時(shí),就會發(fā)生這種情況。 |
| 415 Unsupported Media Type | 由于媒介類型不被支持,服務(wù)器不會接受請求。 |
| 416 Requested Range Not Satisfiable | 服務(wù)器不能滿足客戶在請求中指定的Range頭。 |
| 417 Expectation Failed | 執(zhí)行失敗。 |
| 423 | 鎖定的錯(cuò)誤。 |
5**(服務(wù)端錯(cuò)誤類):服務(wù)器不能正確執(zhí)行一個(gè)正確的請求
| 500 Internal Server Error | 請求未完成。服務(wù)器遇到不可預(yù)知的情況。 |
|---|---|
| 500.12 | 應(yīng)用程序正忙于在 Web 服務(wù)器上重新啟動。 |
| 500.13 | Web 服務(wù)器太忙。 |
| 500.15 | 不允許直接請求 Global.asa。 |
| 500.16 | UNC 授權(quán)憑據(jù)不正確。這個(gè)錯(cuò)誤代碼為 IIS 6.0 所專用。 |
| 500.18 | URL 授權(quán)存儲不能打開。這個(gè)錯(cuò)誤代碼為 IIS 6.0 所專用。 |
| 500.100 | 內(nèi)部 ASP 錯(cuò)誤。 |
| 501 Not Implemented | 請求未完成。服務(wù)器不支持所請求 |
總結(jié)
以上是生活随笔為你收集整理的HTTP和HTTPS的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python3.x和Python2.x的
- 下一篇: 小知识:杜绝明文密码,OGG的crede