慕課網(wǎng)《前端JavaScript面試技巧》學(xué)習(xí)筆記(8)-存儲(chǔ)與Ajax

1.請(qǐng)描述一下cookie,sessionStorage烹棉,和localStorage的區(qū)別
2.手動(dòng)編寫一個(gè)ajax烹卒,不依賴第三方庫(kù)
3.跨域的幾種實(shí)現(xiàn)方式

知識(shí)點(diǎn)#####
  • cookie

  • 本身用于客戶端服務(wù)端通信蜂怎,但它有本地存儲(chǔ)的功能于是就被‘借用’,使用documen.cookie=...獲取和修改

  • 缺點(diǎn):

    • 存儲(chǔ)量太小始花,只有4kb
    • 所有http請(qǐng)求都帶著妄讯,會(huì)影響獲取資源的效率
    • API簡(jiǎn)單,需要封裝才能用 衙荐,document.cookie=...用起來麻煩
  • localStorage和sessionStorage

    • HTML5專為存儲(chǔ)設(shè)計(jì)捞挥,最大容量5M
    • API:localStorage.setItem(key,value); localStorage.getItem(key);
    • IOS Safari隱藏模式下,localStorage.getItem(key);會(huì)報(bào)錯(cuò)忧吟,建議同意使用try-catch封裝
  • XMLHttpRequest

var xhr=new XMLHttpRequest()
xhr.open('GET','/api',false)
xhr.onreadystatechange=function(){
  //這里的函數(shù)異步執(zhí)行
  if(xhr.readyState==4){
    if(xhr.status==200){
      alert(xhr.responseText)
    }
  }
}
xhr.send(null)

IE低版本使用ActiveXObject砌函,和W3C標(biāo)準(zhǔn)不一樣

  • 狀態(tài)碼說明
    • readyState
      • 0-(未初始化)還沒有調(diào)用send()方法
      • 1-(載入)已調(diào)用send()方法,正在發(fā)送請(qǐng)求
      • 2-(載入完成)send()方法執(zhí)行完成溜族,已經(jīng)收到全部響應(yīng)內(nèi)容
      • 3-(交互)正在解析響應(yīng)內(nèi)容
      • 4-(完成)響應(yīng)內(nèi)容解析完成讹俊,可以在客戶端調(diào)用了
    • status
      • 2xx-成功處理請(qǐng)求。如200
      • 3xx-需要重定向煌抒,瀏覽器直接跳轉(zhuǎn)
      • 4xx-客戶端請(qǐng)求錯(cuò)誤仍劈,如404(地址錯(cuò)誤)
      • 5xx-服務(wù)器端錯(cuò)誤
  • 跨域
    • 什么是跨域

      • 瀏覽器有同源策略,不允許ajax訪問其他域接口
      • 跨域條件:協(xié)議寡壮、域名贩疙、端口,有一個(gè)不同就算跨域
    • JSONP
      加載http://coding.m.imooc.com/classindex.html况既,不一定服務(wù)器端真的有一個(gè)classindex.html文件这溅,服務(wù)器可以根據(jù)請(qǐng)求動(dòng)態(tài)生成一個(gè)文件來返回,同理于<script src='http://coding.m.imooc.com/api.js'>

    • 實(shí)現(xiàn)原理
      假如你的網(wǎng)站要跨域訪問慕課網(wǎng)的一個(gè)接口棒仍,慕課網(wǎng)給你一個(gè)地址http://coding.m.imooc.com/api.js悲靴,返回內(nèi)容格式如callback({x:100,y:200})(可動(dòng)態(tài)生成)

    <script>
    window.callback=function(data){
      //這是我們跨域得到的信息
      console.log(data);
    }
    </script>
    <script src='http://coding.m.imooc.com/api.js'></script>
    <!-- 以上將返回callback({x:100,y:200}) -->
  • 服務(wù)端設(shè)置http header
    另外一個(gè)解決跨域的簡(jiǎn)單方法莫其,需要服務(wù)器端來做癞尚,但是作為交互方,我們必須知道這個(gè)方法乱陡,是將來解決跨域問題的一個(gè)趨勢(shì)
//注意:不同后端語(yǔ)言的寫法可能不一樣
//第二個(gè)參數(shù)填寫允許跨域的域名稱浇揩,不建議直接寫"*"
response.setHeader('Access-Control-Allow-Origin','http://a.com,http://b.com');
response.setHeader('Access-Control-Allow-Headers','X-Request-With');
response.setHeader('Access-Control-Allow-Methods','PUT,POST,GET,DELETE,OPTIONS');
//接受跨域的cookie
response.setHeader('Access-Control-Allow-Credentials','true');
  • 可以跨域的三個(gè)標(biāo)簽:

    • <img src=''>
    • <link href=''>
    • <script src=''>
  • 三個(gè)標(biāo)簽的場(chǎng)景

  • <img> 用于打點(diǎn)統(tǒng)計(jì),統(tǒng)計(jì)網(wǎng)站可能是其它域

  • <link><script>可以使用CDN憨颠,CDN也是其它域

  • <script>可以用于JSONP

  • 跨域注意事項(xiàng)

    • 所有的跨域請(qǐng)求都必須經(jīng)過信息提供方的允許
    • 如果未經(jīng)允許即可獲取临燃,那就是瀏覽器的同源策略出現(xiàn)漏洞
解題#####

1.請(qǐng)描述一下cookie,sessionStorage烙心,和localStorage的區(qū)別

  • 容量區(qū)別膜廊,cookie為4k,localStorage和sessionStorage為5M
  • cookie每次請(qǐng)求都會(huì)被攜帶在ajax中淫茵,localStorage和sessionStorage不會(huì)被攜帶只作為存儲(chǔ)使用
  • API易用性

2.手動(dòng)編寫一個(gè)ajax爪瓜,不依賴第三方庫(kù)

var xhr=new XMLHttpRequest()
xhr.open('GET','/api',false)
xhr.onreadystatechange=function(){
  //這里的函數(shù)異步執(zhí)行
  if(xhr.readyState==4){
    if(xhr.status==200){
      alert(xhr.responseText)
    }
  }
}
xhr.send(null)

3. 跨域的幾種實(shí)現(xiàn)方式

  • JSONP
  • 服務(wù)器端設(shè)置http header
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市匙瘪,隨后出現(xiàn)的幾起案子铆铆,更是在濱河造成了極大的恐慌蝶缀,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,682評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件薄货,死亡現(xiàn)場(chǎng)離奇詭異翁都,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)谅猾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門柄慰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人税娜,你說我怎么就攤上這事坐搔。” “怎么了敬矩?”我有些...
    開封第一講書人閱讀 165,083評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵概行,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我弧岳,道長(zhǎng)凳忙,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,763評(píng)論 1 295
  • 正文 為了忘掉前任禽炬,我火速辦了婚禮涧卵,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘瞎抛。我一直安慰自己艺演,他們只是感情好却紧,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評(píng)論 6 392
  • 文/花漫 我一把揭開白布桐臊。 她就那樣靜靜地躺著,像睡著了一般晓殊。 火紅的嫁衣襯著肌膚如雪断凶。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,624評(píng)論 1 305
  • 那天巫俺,我揣著相機(jī)與錄音认烁,去河邊找鬼。 笑死介汹,一個(gè)胖子當(dāng)著我的面吹牛却嗡,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播嘹承,決...
    沈念sama閱讀 40,358評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼窗价,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了叹卷?” 一聲冷哼從身側(cè)響起撼港,我...
    開封第一講書人閱讀 39,261評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤坪它,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后帝牡,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體往毡,經(jīng)...
    沈念sama閱讀 45,722評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年靶溜,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了开瞭。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,030評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡墨技,死狀恐怖惩阶,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情扣汪,我是刑警寧澤断楷,帶...
    沈念sama閱讀 35,737評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站崭别,受9級(jí)特大地震影響冬筒,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜茅主,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評(píng)論 3 330
  • 文/蒙蒙 一舞痰、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧诀姚,春花似錦响牛、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至糯笙,卻和暖如春贬丛,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背给涕。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工豺憔, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人够庙。 一個(gè)月前我還...
    沈念sama閱讀 48,237評(píng)論 3 371
  • 正文 我出身青樓恭应,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親耘眨。 傳聞我的和親對(duì)象是個(gè)殘疾皇子昼榛,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 什么是跨域? 2.) 資源嵌入:毅桃、褒纲、准夷、等dom標(biāo)簽,還有樣式中background:url()莺掠、@font-fac...
    電影里的夢(mèng)i閱讀 2,374評(píng)論 0 5
  • 前端開發(fā)面試知識(shí)點(diǎn)大綱: HTML&CSS: 對(duì)Web標(biāo)準(zhǔn)的理解衫嵌、瀏覽器內(nèi)核差異、兼容性彻秆、hack楔绞、CSS基本功:...
    秀才JaneBook閱讀 2,371評(píng)論 0 25
  • 聲明:這些題目是在某個(gè)前端群看到的,在這分享給大家唇兑,如有侵權(quán)酒朵,請(qǐng)私信。 1.一些開放性題目 position的值扎附,...
    一歲一枯榮_閱讀 6,522評(píng)論 0 33
  • HTML HTML5標(biāo)簽 媒體查詢head部分寫法 Doctype作用? 嚴(yán)格模式與混雜模式如何區(qū)分蔫耽?它們有何意義...
    Mayo_閱讀 644評(píng)論 0 8
  • 常見試題 行內(nèi)元素:會(huì)在水平方向排列,不能包含塊級(jí)元素留夜,設(shè)置width無效匙铡,height無效(可以設(shè)置line-h...
    他大舅啊閱讀 2,445評(píng)論 1 5