溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

HTTP與HTTPS要點(diǎn)詳解2

發(fā)布時間:2020-05-19 13:18:57 來源:網(wǎng)絡(luò) 閱讀:481 作者:二郎神六號 欄目:軟件技術(shù)
  • HTTP三點(diǎn)注意事項(xiàng):
    a. HTTP是無連接:限制每次連接只處理一個請求。服務(wù)器處理完客戶的請求,并收到客戶的應(yīng)答后,即斷開連接。采用這種方式可以節(jié)省傳輸時間。
    b. HTTP是媒體獨(dú)立的:只要客戶端和服務(wù)器知道如何處理的數(shù)據(jù)內(nèi)容,任何類型的數(shù)據(jù)都可以通過HTTP發(fā)送??蛻舳艘约胺?wù)器指定使用適合的MIME-type內(nèi)容類型。
    c.HTTP是無狀態(tài):協(xié)議對于事務(wù)處理沒有記憶能力。
  • HTTP服務(wù)端 WEB服務(wù)器 萬維網(wǎng)(WWW:World Wide Web )服務(wù)器
  • Web服務(wù)器有:Apache服務(wù)器,IIS服務(wù)器(Internet Information Services),Nginx服務(wù)器等。
  • URL,全稱是UniformResourceLocator, 中文叫統(tǒng)一資源定位符,是互聯(lián)網(wǎng)上用來標(biāo)識某一處資源的地址。以下面這個URL為例,介紹下普通URL的各部分組成:

    http://www.example.com:8080/hello/world?boardID=5&ID=24618&page=1#name
    一個完整的URL包括以下幾部分:
    1.協(xié)議部分:該URL的協(xié)議部分為“http:”,這代表網(wǎng)頁使用的是HTTP協(xié)議。在Internet中可以使用多種協(xié)議,如HTTP,F(xiàn)TP等等本例中使用的是HTTP協(xié)議。在"HTTP"后面的“//”為分隔符
    
    2.域名部分:該URL的域名部分為“www.example.com”。一個URL中,也可以使用IP地址作為域名使用
    
    3.端口部分:跟在域名后面的是端口,域名和端口之間使用“:”作為分隔符。端口不是一個URL必須的部分,如果省略端口部分,將采用默認(rèn)端口,http默認(rèn)80, https默認(rèn)443
    
    4.虛擬目錄部分:從域名后的第一個“/”開始到最后一個“/”為止,是虛擬目錄部分。虛擬目錄也不是一個URL必須的部分。本例中的虛擬目錄是“/hello/”
    
    5.文件名部分:從域名后的最后一個“/”開始到“?”為止,是文件名部分,如果沒有“?”,則是從域名后的最后一個“/”開始到“#”為止,是文件部分,如果沒有“?”和“#”,那么從域名后的最后一個“/”開始到結(jié)束,都是文件名部分。本例中的文件名是“world"。文件名部分也不是一個URL必須的部分,如果省略該部分,則使用默認(rèn)的文件名
    
    6.錨部分:從“#”開始到最后,都是錨部分。本例中的錨部分是“name”。錨部分也不是一個URL必須的部分
    
    7.參數(shù)部分:從“?”開始到“#”為止之間的部分為參數(shù)部分,又稱搜索部分、查詢部分。本例中的參數(shù)部分為“boardID=5&ID=24618&page=1”。參數(shù)可以允許有多個參數(shù),參數(shù)與參數(shù)之間用“&”作為分隔符。
  • 客戶端發(fā)送一個HTTP請求到服務(wù)器的請求消息包括以下格式:
    請求行(request line)、請求頭部(header)、空行和請求數(shù)據(jù)四個部分組成。
    下圖給出了請求報文的一般格式。
    HTTP與HTTPS要點(diǎn)詳解2

  • HTTP響應(yīng)也由四個部分組成,分別是:狀態(tài)行、消息報頭、空行和響應(yīng)正文。

HTTP與HTTPS要點(diǎn)詳解2

  • 實(shí)例-----使用GET來傳遞數(shù)據(jù)
    客戶端請求:
    GET /hello.txt HTTP/1.1
    User-Agent: curl/7.16.3 libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3
    Host: www.example.com
    Accept-Language: en, mi
    服務(wù)端響應(yīng):
    HTTP/1.1 200 OK
    Date: Mon, 27 Jul 2009 12:28:53 GMT
    Server: Apache
    Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT
    ETag: "34aa387-d-1568eb00"
    Accept-Ranges: bytes
    Content-Length: 51
    Vary: Accept-Encoding
    Content-Type: text/plain
    輸出結(jié)果:
    Hello World! My payload includes a trailing CRLF.

  • HTTP請求方法
    GET 請求指定的頁面信息,并返回實(shí)體主體。
    HEAD 類似于get請求,只不過返回的響應(yīng)中沒有具體的內(nèi)容,用于獲取報頭
    POST 向指定資源提交數(shù)據(jù)進(jìn)行處理請求(例如提交表單或者上傳文件)。數(shù)據(jù)被包含在請求體中。POST請求可能會導(dǎo)致新的資源的建立和/或已有資源的修改。
    PUT 從客戶端向服務(wù)器傳送的數(shù)據(jù)取代指定的文檔的內(nèi)容。
    DELETE 請求服務(wù)器刪除指定的頁面。
    CONNECT HTTP/1.1協(xié)議中預(yù)留給能夠?qū)⑦B接改為管道方式的代理服務(wù)器。
    OPTIONS 允許客戶端查看服務(wù)器的性能。
    TRACE 回顯服務(wù)器收到的請求,主要用于測試或診斷。

  • HTTP 響應(yīng)頭信息
    Allow 服務(wù)器支持哪些請求方法(如GET、POST等)。
    Content-Encoding 文檔的編碼(Encode)方法。只有在解碼之后才可以得到Content-Type頭指定的內(nèi)容類型。利用gzip壓縮文檔能夠顯著地減少HTML文檔的下載時間。Servlet應(yīng)該通過查看Accept-Encoding頭(即request.getHeader("Accept-Encoding"))檢查瀏覽器是否支持gzip,為支持gzip的瀏覽器返回經(jīng)gzip壓縮的HTML頁面,為其他瀏覽器返回普通頁面。
    Content-Length 表示內(nèi)容長度
    Content-Type 表示后面的文檔屬于什么MIME類型。
    Date 當(dāng)前的GMT時間(零時區(qū)時間)
    Expires 應(yīng)該在什么時候認(rèn)為文檔已經(jīng)過期,從而不再緩存它
    Last-Modified 文檔的最后改動時間。客戶可以通過If-Modified-Since請求頭提供一個日期,該請求將被視為一個條件GET,只有改動時間遲于指定時間的文檔才會返回,否則返回一個304(Not Modified)狀態(tài)。
    Location 表示客戶應(yīng)當(dāng)?shù)侥睦锶ヌ崛∥臋n。Location通常不是直接設(shè)置的,而是通過HttpServletResponse的sendRedirect方法,該方法同時設(shè)置狀態(tài)代碼為302。
    Server 服務(wù)器名字。Servlet一般不設(shè)置這個值,而是由Web服務(wù)器自己設(shè)置。
    Set-Cookie 設(shè)置和頁面關(guān)聯(lián)的Cookie。
    WWW-Authenticate 客戶應(yīng)該在Authorization頭中提供什么類型的授權(quán)信息
    Host 頭域指定請求資源的Intenet主機(jī)和端口號,必須表示請求url的原始服務(wù)器或網(wǎng)關(guān)的位置
    Referer 主要用來讓服務(wù)器判斷來源頁面, 即用戶是從哪個頁面來的
    用來統(tǒng)計用戶來源,是從搜索頁面來的,還是從其他網(wǎng)站鏈接過來,或是從書簽等訪問,以便網(wǎng)站合理定位.
    用作防盜鏈, 即下載時判斷來源地址是不是在網(wǎng)站域名之內(nèi), 否則就不能下載或顯示.
    對于某些惡意用戶,也可能偽造Referer來獲得某些權(quán)限,在設(shè)計網(wǎng)站時要考慮到這個問題.
    還可用做電子商務(wù)網(wǎng)站的安全,在提交信用卡等重要信息的頁面用referer來判斷上一頁是不是自己的網(wǎng)站,如果不是,可能是***用自己寫的一個表單,來提交,為了能跳過你上一頁里的javascript的驗(yàn)證等目的。
    但是注意不要把Rerferer用在身份驗(yàn)證或者其他非常重要的檢查上,因?yàn)镽erferer非常容易在客戶端被改變。
    User-Agent 頭域的內(nèi)容包含發(fā)出請求的用戶信息。
    Cache-Control 指定請求和響應(yīng)遵循的緩存機(jī)制。
    connection 是表示當(dāng)client和server通信時對于長鏈接如何進(jìn)行處理。
    在http1.1中,client和server都是默認(rèn)對方支持長鏈接的, 如果client使用http1.1協(xié)議,但又不希望使用長鏈接,則需要在header中指明connection的值為close;
    如果server方也不想支持長鏈接,則在response中也需要明確說明connection的值為close。不論request還是response的header中包含了值為close的connection,都表明當(dāng)前正在使用的tcp鏈接在當(dāng)天請求處理完畢后會被斷掉。以后client再進(jìn)行新的請求時就必須創(chuàng)建新的tcp鏈接了。

  • 常見的HTTP狀態(tài)碼:
    200 - 請求成功
    301 - 資源(網(wǎng)頁等)被永久轉(zhuǎn)移到其它URL
    400 - Bad Request //客戶端請求有語法錯誤,不能被服務(wù)器所理解
    401 - Unauthorized //請求未經(jīng)授權(quán),這個狀態(tài)代碼必須和WWW-Authenticate報頭域一起使用
    403 - Forbidden //服務(wù)器收到請求,但是拒絕提供服務(wù)
    404 - 請求的資源(網(wǎng)頁等)不存在
    500 - Internal Server Error //服務(wù)器發(fā)生不可預(yù)期的錯誤
    503 - Server Unavailable //服務(wù)器當(dāng)前不能處理客戶端的請求,一段時間后可能恢復(fù)正常

    HTTP狀態(tài)碼由三個十進(jìn)制數(shù)字組成,第一個十進(jìn)制數(shù)字定義了狀態(tài)碼的類型,后兩個數(shù)字沒有分類的作用。 HTTP狀態(tài)碼共分為5種類型:
    1 信息,服務(wù)器收到請求,需要請求者繼續(xù)執(zhí)行操作
    2
    成功,操作被成功接收并處理
    3 重定向,需要進(jìn)一步的操作以完成請求
    4
    客戶端錯誤,請求包含語法錯誤或無法完成請求
    5** 服務(wù)器錯誤,服務(wù)器在處理請求的過程中發(fā)生了錯誤

    更多狀態(tài)碼http://www.runoob.com/http/http-status-codes.html

  • GET提交的數(shù)據(jù)會放在URL之后,以?分割URL和傳輸數(shù)據(jù),參數(shù)之間以&相連如果數(shù)據(jù)是英文字母/數(shù)字,原樣發(fā)送,如果是空格,轉(zhuǎn)換為+,如果是中文/其他字符,則直接把字符串用BASE64加密
  • POST方法是把提交的數(shù)據(jù)放在HTTP包的Body中.*
  • POST的安全性要比GET的安全性高。比如:通過GET提交數(shù)據(jù),用戶名和密碼將明文出現(xiàn)在URL上,因?yàn)榈卿涰撁嬗锌赡鼙粸g覽器緩存;其他人查看瀏覽器的歷史紀(jì)錄,那么別人就可以拿到你的賬號和密碼了,除此之外,使用GET提交數(shù)據(jù)還可能會造成Cross-site request forgery***
  • GET提交的數(shù)據(jù)大小有限制(因?yàn)闉g覽器對URL的長度有限制),而POST方法提交的數(shù)據(jù)沒有限制.
向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI