1、Jsonp的原理璧帝,如何利用Jsonp發(fā)送post請(qǐng)求捍岳?
JSONP動(dòng)態(tài)插入<script>元素,為其src屬性指定一個(gè)跨域URL睬隶;包含在回調(diào)函數(shù)中的JSON數(shù)據(jù)锣夹。與ajax無(wú)關(guān),算是一種內(nèi)容注入苏潜,所以存在一定的安全問(wèn)題银萍。
流程:客戶端發(fā)送的src的網(wǎng)址中利用查詢字符串傳遞一個(gè)查詢參數(shù)--callback;服務(wù)端得到這個(gè)callback的名字后恤左,會(huì)利用js語(yǔ)法生成一個(gè)function贴唇,function的名字就是這個(gè)回調(diào)函數(shù)搀绣,將要返回的內(nèi)容用json格式包裝起來(lái),放置到函數(shù)中戳气,返回給客戶端链患;客戶端解析<script>標(biāo)簽,執(zhí)行返回的js文檔瓶您。
JSONP默認(rèn)只支持get方法麻捻,JSONP發(fā)送post請(qǐng)求:方法一:如果是利用jquery的話
客戶端更改:
添加:crossDomain: true
修改:dataType: "json"
服務(wù)端添加:
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST');
方法二:在查詢字符串中添加一個(gè)標(biāo)記字符串,比如tag=post呀袱;與服務(wù)器端約定贸毕,當(dāng)接收到這個(gè)標(biāo)記時(shí),將get請(qǐng)求轉(zhuǎn)化為post請(qǐng)求压鉴。
2崖咨、get和post的區(qū)別
(1)使用Get請(qǐng)求時(shí),參數(shù)在URL中顯示,而使用Post請(qǐng)求,則不會(huì)顯示出來(lái);
(2)Post傳輸?shù)臄?shù)據(jù)量大油吭,可以達(dá)到2M击蹲,而Get方法由于受到URL長(zhǎng)度的限制,只能傳遞大約1024字節(jié).?
(3)Get請(qǐng)求需注意緩存問(wèn)題,Post請(qǐng)求不需擔(dān)心這個(gè)問(wèn)題;?
(4)Post請(qǐng)求必須設(shè)置Content-Type婉宰;?
(5)發(fā)送請(qǐng)求時(shí),因?yàn)镚et請(qǐng)求的參數(shù)都在url里,所以send函數(shù)發(fā)送的參數(shù)為null,而Post請(qǐng)求在使用send方法時(shí),卻需賦予其參數(shù)歌豺;?
(6)GET方式請(qǐng)求的數(shù)據(jù)會(huì)被瀏覽器緩存起來(lái),因此其他人就可以從瀏覽器的歷史記錄中讀取到這些數(shù)據(jù)心包,例如賬號(hào)和密碼等类咧。在某種情況下,GET方式會(huì)帶來(lái)嚴(yán)重的安全問(wèn)題蟹腾。而POST方式相對(duì)來(lái)說(shuō)就可以避免這些問(wèn)題痕惋。?
3、cookie和localStorage的區(qū)別
cookie:為了辨別用戶身份娃殖,存儲(chǔ)在用戶本地終端的數(shù)據(jù)值戳。分為:(1)內(nèi)存cookie:保存在內(nèi)存中,由瀏覽器維護(hù)炉爆,關(guān)閉瀏覽器則消失(2)硬盤cookie:保存在硬盤中堕虹,除非手動(dòng)清理或過(guò)期,否則不會(huì)消失芬首。
服務(wù)器可以設(shè)置或讀取?Cookies?中包含的信息赴捞,借此維護(hù)用戶跟服務(wù)器會(huì)話中的狀態(tài)。因?yàn)?HTTP?協(xié)議是無(wú)狀態(tài)的郁稍,就是說(shuō)服務(wù)器不知道用戶上一次做了什么赦政,為實(shí)現(xiàn)交互,就用?Cookie?來(lái)記錄耀怜。
cookie的缺點(diǎn):(1)Cookie?會(huì)被附加到每個(gè)?HTTP?請(qǐng)求中昼钻,無(wú)形增加了流量
? ? ? ? ? ? ? ? ? ? ? ? ?(2)HTTP請(qǐng)求中的?Cookie?是明文傳遞掸屡,安全性成問(wèn)題。(HTTPS?不會(huì))
? ? ? ? ? ? ? ? ? ? ? ? ?(3)Cookie?大小限制在?4KB然评,對(duì)于復(fù)雜的存儲(chǔ)需求是不夠用的
附加討論:cookie和session的區(qū)別
1仅财,session 在服務(wù)器端,cookie 在客戶端(瀏覽器)
2碗淌,session 默認(rèn)被存在在服務(wù)器的一個(gè)文件里(不是內(nèi)存)
3盏求,session 的運(yùn)行依賴 session id,而 session id 是存在 cookie 中的亿眠,也就是說(shuō)碎罚,如果瀏覽器禁用了 cookie ,同時(shí) session 也會(huì)失效(但是可以通過(guò)其它方式實(shí)現(xiàn)纳像,比如在 url 中傳遞 session_id)
4荆烈,session 可以放在 文件、數(shù)據(jù)庫(kù)竟趾、或內(nèi)存中都可以憔购。
5,用戶驗(yàn)證這種場(chǎng)合一般會(huì)用 session
因此岔帽,維持一個(gè)會(huì)話的核心就是客戶端的唯一標(biāo)識(shí)玫鸟,即 session id∠眨可以通過(guò)cookie加密的形式取代session屎飘。
4、說(shuō)說(shuō)有哪些http狀態(tài)碼贾费,304狀態(tài)碼
5钦购、緩存的過(guò)程原理
瀏覽器和服務(wù)器如何標(biāo)記網(wǎng)站頁(yè)面更新的機(jī)制
Cache-Control優(yōu)先級(jí)高于Expires
請(qǐng)求頭:If-Modify-Since 搭配 響應(yīng)頭:last-Modified
請(qǐng)求頭:If-None-Match 搭配 響應(yīng)頭:Etag(資源唯一標(biāo)識(shí)符)
Etag優(yōu)先級(jí)高于last-Modified
Cache-Control里有一個(gè)max-age,緩存的最大保存時(shí)間褂萧。
6押桃、詳細(xì)說(shuō)明一下,當(dāng)刷新一個(gè)瀏覽器頁(yè)面時(shí)箱玷,緩存是如何工作的
max-age,Etag陌宿,last-Modified
Etag唯一資源標(biāo)識(shí)符是如何生成的锡足?(利用MD5,會(huì)根據(jù)文件內(nèi)容生成對(duì)應(yīng)的編碼壳坪,并且當(dāng)文件內(nèi)容改變時(shí)舶得,編碼自動(dòng)改變。)
7爽蝴、transition和animation的區(qū)別——css3動(dòng)畫
transition:屬性過(guò)渡沐批;需要用戶行為觸發(fā)過(guò)渡纫骑,比如:hover,:focus,
animation:通過(guò)關(guān)鍵幀@keyframe來(lái)制作動(dòng)畫,不需要觸發(fā)
8九孩、安卓和ios的兼容性問(wèn)題
淘寶的flexible解決方案:
ib-flexible庫(kù)的使用方法非常的簡(jiǎn)單先馆,只需要在Web頁(yè)面中添加對(duì)應(yīng)的flexible_css.js,flexible.js文件:在所有資源加載之前執(zhí)行這個(gè)JS。執(zhí)行這個(gè)JS后躺彬,會(huì)在元素上增加一個(gè)data-dpr屬性煤墙,以及一個(gè)font-size樣式。JS會(huì)根據(jù)不同的設(shè)備添加不同的data-dpr值宪拥,比如說(shuō)2或者3仿野,同時(shí)會(huì)給html加上對(duì)應(yīng)的font-size的值,比如說(shuō)75px她君。如此一來(lái)脚作,頁(yè)面中的元素,都可以通過(guò)rem單位來(lái)設(shè)置缔刹。他們會(huì)根據(jù)html元素的font-size值做相應(yīng)的計(jì)算球涛,從而實(shí)現(xiàn)屏幕的適配效果。
自己的實(shí)現(xiàn):首先利用media進(jìn)行屏幕響應(yīng)桨螺,其次宾符,在根元素傷設(shè)置rem尺寸,則全部使用rem灭翔,都能響應(yīng)魏烫。
9、如何實(shí)現(xiàn)水平肝箱、垂直居中
10哄褒、盒子模型
11、git如何合并分支
git merge;合并之后才能夠提交煌张。