面試題網絡請求的過程?1、GET和POST定義說道GET和POST,就不得不提HTTP協議,因為浏覽器和服務器的交互是通過,我來為大家科普一下關于面試題網絡請求的過程?下面希望有你要的答案,我們一起來看看吧!
1、GET和POST定義
說道GET和POST,就不得不提HTTP協議,因為浏覽器和服務器的交互是通過
HTTP協議執行的,而GET和POST也是HTTP協議中的兩種方法。
HTTP全稱為Hyper Text Transfer Protocol,中文翻譯為超文本傳輸協議,目
的是保證浏覽器與服務器之間的通信。HTTP的工作方式是客戶端與服務器之間
的請求-應答協議。
HTTP協議中定義了浏覽器和服務器進行交互的不同方法,基本方法有4種,分
别是GET,POST,PUT,DELETE。這四種方法可以理解為,對服務器資源的
查,改,增,删。
GET:從服務器上獲取數據,也就是所謂的查,僅僅是獲取服務器資源,不進行
修改。
POST:向服務器提交數據,這就涉及到了數據的更新,也就是更改服務器的數
據。
PUT:英文含義是放置,也就是向服務器新添加數據,就是所謂的增。
DELETE:從字面意思也能看出,這種方式就是删除服務器數據的過程。
2、GET和POST區别
1. Get是不安全的,因為在傳輸過程,數據被放在請求的URL中;Post的
所有操作對用戶來說都是不可見的。 但是這種做法也不時絕對的,大部分
人的做法也是按照上面的說法來的,但是也可以在get請求加上 request
body,給 post請求帶上 URL 參數。
2. Get請求提交的url中的數據最多隻能是2048字節,這個限制是浏覽器或
者服務器給添加的,http協議并沒有對url長度進行限制,目的是為了保證
服務器和浏覽器能夠正常運行,防止有人惡意發送請求。Post請求則沒有
大小限制。
3. Get限制Form表單的數據集的值必須為ASCII字符;而Post支持整個
ISO10646字符集。
4. Get執行效率卻比Post方法好。Get是form提交的默認方法。
5. GET産生一個TCP數據包;POST産生兩個TCP數據包。對于GET方式的請求,浏覽器會把http header和data一并發送出去,服務器響
應200(返回數據);
而對于POST,浏覽器先發送header,服務器響應100 continue,浏覽器再發
送data,服務器響應200 ok(返回數據)。
3、什麼是對稱加密與非對稱加密
對稱密鑰加密是指加密和解密使用同一個密鑰的方式,這種方式存在的最大問題
就是密鑰發送問題,即如何安全地将密鑰發給對方;
而非對稱加密是指使用一對非對稱密鑰,即公鑰和私鑰,公鑰可以随意發布,但
私鑰隻有自己知道。發送密文的一方使用對方的公鑰進行加密處理,對方接收到
加密信息後,使用自己的私鑰進行解密。
由于非對稱加密的方式不需要發送用來解密的私鑰,所以可以保證安全性;但是
和對稱加密比起來,非常的慢
4、什麼是HTTP2
HTTP2 可以提高了網頁的性能。在 HTTP1 中浏覽器限制了同一個域名下的請求數量(Chrome 下一般是六個),當在請求很多資源的時候,由于隊頭阻塞當浏覽器達到最大請求數量時,剩餘的資源需等待當前的六個請求完成後才能發起請求。HTTP2 中引入了多路複用的技術,這個技術可以隻通過一個 TCP 連接就可以傳輸所有的請求數據。多路複用可以繞過浏覽器限制同一個域名下的請求數量的問題,進而提高了網頁的性能。
5、Session、Cookie和Token的主要區别
HTTP協議本身是無狀态的。什麼是無狀态呢,即服務器無法判斷用戶身份。
5.1什麼是cookie
cookie是由Web服務器保存在用戶浏覽器上的小文件(key-value格式),包含用戶相關的信息。客戶端向服務器發起請求,如果服務器需要記錄該用戶狀态,就使用response向客戶端浏覽器頒發一個Cookie。客戶端浏覽器會把Cookie保存起來。當浏覽器再請求該網站時,浏覽器把請求的網址連同該Cookie一同提交給服務器。服務器檢查該Cookie,以此來辨認用戶身份。
5.2什麼是session
session是依賴Cookie實現的。session是服務器端對象session 是浏覽器和服務器會話過程中,服務器分配的一塊儲存空間。服務器默認為浏覽器在cookie中設置 sessionid,浏覽器在向服務器請求過程中傳輸cookie 包含 sessionid ,服務器根據 sessionid 獲取出會話中存儲的信息,然後确定會話的身份信息。
5.3cookie與session區别
存儲位置與安全性:
cookie數據存放在客戶端上,安全性較差,session數據放在服務器上,安全性相對更高;
存儲空間:單個cookie保存的數據不能超過4K,很多浏覽器都限制一個站點最多保存20個cookie,session無此限制占用服務器資源:session一定時間内保存在服務器上,當訪問增多,占用服務器性能,考慮到服務器性能方面,應當使用cookie。
5.4什麼是Token
Token的引入:Token是在客戶端頻繁向服務端請求數據,服務端頻繁的去數據
庫查詢用戶名和密碼并進行對比,判斷用戶名和密碼正确與否,并作出相應提
示,在這樣的背景下,Token便應運而生。
Token的定義:Token是服務端生成的一串字符串,以作客戶端進行請求的一個
令牌,當第一次登錄後,服務器生成一個Token便将此Token返回給客戶端,以
後客戶端隻需帶上這個Token前來請求數據即可,無需再次帶上用戶名和密碼。
使用Token的目的:Token的目的是為了減輕服務器的壓力,減少頻繁的查詢數
據庫,使服務器更加健壯。
Token 是在服務端産生的。如果前端使用用戶名/密碼向服務端請求認證,服務
端認證成功,那麼在服務端會返回 Token 給前端。前端可以在每次請求的時候
帶上 Token 證明自己的合法地位
5.5session與token區别
session機制存在服務器壓力增大,CSRF跨站僞造請求攻擊,擴展性不強等問
題;
session存儲在服務器端,token存儲在客戶端
token提供認證和授權功能,作為身份認證,token安全性比session好;
session這種會話存儲方式方式隻适用于客戶端代碼和服務端代碼運行在同一台
服務器上,token适用于項目級的前後端分離(前後端代碼運行在不同的服務器下)
6、Servlet是線程安全的嗎Servlet不是線程安全的,多線程并發的讀寫會導緻數據不同步的問題。
解決的辦法是盡量不要定義name屬性,而是要把name變量分别定義在doGet()
和doPost()方法内。雖然使用synchronized(name){}語句塊可以解決問題,但
是會造成線程的等待,不是很科學的辦法。
注意:多線程的并發的讀寫Servlet類屬性會導緻數據不同步。但是如果隻是并
發地讀取屬性而不寫入,則不存在數據不同步的問題。因此Servlet裡的隻讀屬
性最好定義為final類型的。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!