跨域

題目1:什么是同源策略?

同源策略,Same-origin policy,瀏覽器處于安全考慮,只允許與本域下的接口交互。不同源的客戶端腳本在沒(méi)有明確授權(quán)的情況下,不能讀寫(xiě)對(duì)方的資源。同源策略的目的,是為了保證用戶信息的安全,防止惡意的網(wǎng)站竊取數(shù)據(jù)。

同源必須滿足以下3點(diǎn):

  • 同協(xié)議:常見(jiàn)協(xié)議有http、https、file、ssh、ftp、mailto、tel

  • 同域名:比如http://jirengu.com/bhttp://jirengu.com/c

  • 同端口號(hào):URL默認(rèn)不寫(xiě)端口,默認(rèn)端口就是80。注意默認(rèn)80端口和8080端口是不同的。

題目2:什么是跨域?跨域有幾種實(shí)現(xiàn)形式

跨域,就是不同域名的接口之間實(shí)現(xiàn)交互,包括傳輸數(shù)據(jù),操作DOM元素等資源。

跨域有四種實(shí)現(xiàn)形式:

  • JSONP
  • CORS
  • 降域
  • postMessage
題目3:JSONP 的原理是什么

JSONP 的原理簡(jiǎn)單來(lái)說(shuō)就是html中script標(biāo)簽可以引入其他域下的js。利用這個(gè)特性,可實(shí)現(xiàn)跨域訪問(wèn)接口。

實(shí)現(xiàn)流程如下:

  1. 通過(guò)事件觸發(fā),前端實(shí)現(xiàn)新增script元素。srcipt的src為接口路徑。新增script元素的時(shí)候,就會(huì)默認(rèn)執(zhí)行src所指路徑,就會(huì)向后臺(tái)發(fā)起跨域請(qǐng)求。

  2. 在前端自定義一個(gè)函數(shù),用于獲取后臺(tái)響應(yīng)返回的數(shù)據(jù)后,對(duì)數(shù)據(jù)進(jìn)行具體操作。

  3. 在后端,對(duì)響應(yīng)請(qǐng)求后返回的數(shù)據(jù)進(jìn)行包裝。把響應(yīng)數(shù)據(jù)轉(zhuǎn)化為JSON格式的字符串,然后再加上與前端自定義函數(shù)名稱相同的字符串,然后發(fā)送這個(gè)包裝數(shù)據(jù)給前端。

  4. 前端在事件觸發(fā)新增script元素,執(zhí)行src所指接口路徑時(shí),因?yàn)榉祷財(cái)?shù)據(jù)的格式與自定義的函數(shù)相同,就會(huì)執(zhí)行自定義的函數(shù)內(nèi)容,實(shí)現(xiàn)對(duì)數(shù)據(jù)的具體操作。

題目4:CORS是什么

Cross-Origin Resource Sharing,跨域資源共享,是一種ajax跨域請(qǐng)求資源的方法。

在使用AJAX的基礎(chǔ)上,跨域請(qǐng)求時(shí),瀏覽器會(huì)在請(qǐng)求頭Request headers加上“origin:發(fā)起請(qǐng)求的域名”。在后端代碼加上res.header("Accsess-Control-Allow-Origin","*")res.header("Accsess-Control-Allow-Origin","具體URL域名"),這樣會(huì)讓瀏覽器對(duì)任何域名或這個(gè)指定的域名發(fā)送的請(qǐng)求給予回應(yīng)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、瀏覽器的同源策略 1.什么是同源? 所謂“同源”指的是”三個(gè)相同“。相同的域名、端口和協(xié)議,這三個(gè)相同的話就視...
    徐國(guó)軍_plus閱讀 926評(píng)論 1 3
  • 什么是跨域? 2.) 資源嵌入:、、、等dom標(biāo)簽,還有樣式中background:url()、@font-fac...
    電影里的夢(mèng)i閱讀 2,475評(píng)論 0 5
  • 前段時(shí)間學(xué)習(xí)了AJAX,已經(jīng)可以從后臺(tái)拿到JSON串??墒浅霈F(xiàn)了問(wèn)題,目前我發(fā)送的請(qǐng)求都是在同域下的請(qǐng)求,如果我想...
    大春春閱讀 1,101評(píng)論 2 13
  • 概述 在Android開(kāi)發(fā)的過(guò)程中,View的變化是很常見(jiàn)的,如果View變化的過(guò)程沒(méi)有動(dòng)畫(huà)來(lái)過(guò)渡而是瞬間完成,會(huì)...
    小蕓論閱讀 39,161評(píng)論 18 134

友情鏈接更多精彩內(nèi)容