1、OSI 的七層模型都有哪些?
應(yīng)用層:網(wǎng)絡(luò)服務(wù)與最終用戶的一個(gè)接口。
(推薦教程:java面試題)
表示層:數(shù)據(jù)的表示、安全、壓縮。
會話層:建立、管理、終止會話。
傳輸層:定義傳輸數(shù)據(jù)的協(xié)議端口號,以及流控和差錯(cuò)校驗(yàn)。
網(wǎng)絡(luò)層:進(jìn)行邏輯地址尋址,實(shí)現(xiàn)不同網(wǎng)絡(luò)之間的路徑選擇。
數(shù)據(jù)鏈路層:建立邏輯連接、進(jìn)行硬件地址尋址、差錯(cuò)校驗(yàn)等功能。
物理層:建立、維護(hù)、斷開物理連接。
2、get 和 post 請求有哪些區(qū)別?
GET在瀏覽器回退時(shí)是無害的,而POST會再次提交請求。
GET產(chǎn)生的URL地址可以被Bookmark,而POST不可以。
GET請求會被瀏覽器主動cache,而POST不會,除非手動設(shè)置。
GET請求只能進(jìn)行url編碼,而POST支持多種編碼方式。
GET請求參數(shù)會被完整保留在瀏覽器歷史記錄里,而POST中的參數(shù)不會被保留。
GET請求在URL中傳送的參數(shù)是有長度限制的,而POST么有。
對參數(shù)的數(shù)據(jù)類型,GET只接受ASCII字符,而POST沒有限制。
GET比POST更不安全,因?yàn)閰?shù)直接暴露在URL上,所以不能用來傳遞敏感信息。
GET參數(shù)通過URL傳遞,POST放在Request body中。
3、如何實(shí)現(xiàn)跨域?
方式一:圖片ping或script標(biāo)簽跨域
方式二:JSONP跨域
方式三:CORS
方式四:window.name+iframe
方式五:window.postMessage()
方式六:修改document.domain跨子域
方式七:WebSocket
方式八:代理
4、說一下 JSONP 實(shí)現(xiàn)原理?
jsonp 即 json+padding,動態(tài)創(chuàng)建script標(biāo)簽,利用script標(biāo)簽的src屬性可以獲取任何域下的js腳本,通過這個(gè)特性(也可以說漏洞),服務(wù)器端不在返貨json格式,而是返回一段調(diào)用某個(gè)函數(shù)的js代碼,在src中進(jìn)行了調(diào)用,這樣實(shí)現(xiàn)了跨域。