關(guān)于跨域的問題(面試)

    1. 什么是 跨域
    • 不同域名之間進(jìn)行訪問咕宿。
    • 跨域烦粒,指的是瀏覽器不能執(zhí)行其他網(wǎng)站的腳本。它是由瀏覽器的同源策略造成的蚤氏,是瀏覽器對(duì)javascript施加的安全限制
    1. 同源策略甘耿?
    • 所謂同源是指域名,協(xié)議瞧捌,端口均相同棵里。
    • 例子如下
    http://www.123.com/index.html 調(diào)用 http://www.123.com/server.php (非跨域)
    http://www.123.com/index.html 調(diào)用 http://www.456.com/server.php (主域名不同:123/456润文,跨域)
    http://abc.123.com/index.html 調(diào)用 http://def.123.com/server.php (子域名不同:abc/def,跨域)
    http://www.123.com:8080/index.html 調(diào)用http://www.123.com:8081/server.php (端口不同:8080/8081殿怜,跨域)
    http://www.123.com/index.html 調(diào)用 https://www.123.com/server.php (協(xié)議不同:http/https典蝌,跨域)
    
    • 請(qǐng)注意:localhost和127.0.0.1雖然都指向本機(jī),但也屬于跨域头谜。
    • 瀏覽器執(zhí)行javascript腳本時(shí)骏掀,會(huì)檢查這個(gè)腳本屬于哪個(gè)頁面,如果不是同源頁面柱告,就不會(huì)被執(zhí)行截驮。
    1. 是誰造成了跨域
      瀏覽器造成的跨域
    1. 為什么會(huì)有跨域际度?
      為了數(shù)據(jù)的安全
    1. 在開發(fā)中葵袭,你是如何解決跨域的問題
    • jsonp解決跨域
    • 往瀏覽器當(dāng)中安裝插件
    1. jsonp與Ajax有關(guān)系嗎
    • 沒有乖菱。
    • Ajax是JavaScript提供的方法坡锡。用于請(qǐng)求數(shù)據(jù),當(dāng)跨域的時(shí)候窒所,拿不到數(shù)據(jù)鹉勒。
    • jsonp是解決跨域的方案
    1. jsonp原理是怎么實(shí)現(xiàn)的
    • 借助標(biāo)簽的src屬性進(jìn)行數(shù)據(jù)請(qǐng)求
    • 使用src,請(qǐng)求數(shù)據(jù)
    • 在本地聲明一個(gè)方法
    • 要在服務(wù)端處理跨域
    1. jsonp的原理1(原生的方式)

在本地聲明一個(gè)方法

<script>
    function fn() {
        alert("執(zhí)行了前端的alert方法")
    }
</script>

使用src,請(qǐng)求數(shù)據(jù)

<script src="06-jsonp.php"></script>

要在服務(wù)端處理跨域

echo "fn()";

該方法能夠解決跨域的問題,但是方法被寫死不靈活吵取。下面的方法將函數(shù)名傳遞過去禽额。

  • 9. jsonp的原理1(原生的改進(jìn))

在本地聲明一個(gè)方法

<script>
    function wmx() {
        alert("wmx函數(shù)執(zhí)行了前端的alert方法")
    }
</script>

使用src,請(qǐng)求數(shù)據(jù)

//將函數(shù)名作為參數(shù)傳遞過去
<script src="07-jsonp.php?callback=wmx"></script>

要在服務(wù)端處理跨域

$res = $_GET['callback'];
//使用點(diǎn)進(jìn)行連接
echo $res."()";
  • 10.jsonp的原理1(原生:實(shí)現(xiàn)服務(wù)端返回?cái)?shù)據(jù)給前端)

在本地聲明一個(gè)方法

<script>
    function wmx(args) {
        alert(args)
    }
</script>

使用src,請(qǐng)求數(shù)據(jù)

//將函數(shù)名作為參數(shù)傳遞過去
<script src="07-jsonp.php?callback=wmx"></script>

要在服務(wù)端處理跨域

$res = $_GET['callback'];
//使用點(diǎn)進(jìn)行連接
echo $res."('這是服務(wù)端返回的數(shù)據(jù)')";
  1. 演示跨域的實(shí)現(xiàn)1(使用jsonp的方法解決跨域)
<script>
    function wmx(args) {
       alert(args);
        console.log(args);
    }
</script>

使用src,請(qǐng)求數(shù)據(jù)

//豆瓣API可接受callback參數(shù),使返回的數(shù)據(jù)為jsonp皮官。
//callback只能包含數(shù)字脯倒、字母、下劃線臣疑,長(zhǎng)度不大于50
<script src="https://api.douban.com/v2/book/1220562?callback=wmx"></script>
  1. 演示跨域的實(shí)現(xiàn)2(AngularJS中處理跨域:封裝原生jsonp)
    • 在不同的域內(nèi)新建一個(gè)文件盔憨,地址為
      http://localhost/mine/09.php

    • 具體實(shí)現(xiàn)
      使用angularJS實(shí)現(xiàn)跨域(原理:jsonp)
      核心代碼:(必須按照嚴(yán)格來寫徙菠,不能寫錯(cuò))
      method:'jsonp',
      params:{
      callback:"JSON_CALLBACK"
      }

<body ng-app="app" ng-controller="wmxController">

<p>{{data}}</p>

<script src="angular.js"></script>

<script>

   var app = angular.module('app',[]);

   app.controller('wmxController',['$scope','$http',function ($scope,$http) {
       $http({m
           url:'http://localhost/mine/09.php',
           method:'jsonp',
           params:{
               callback:"JSON_CALLBACK"
           }
       }).success(function (res) {
           $scope.data = res;
           console.log($scope.data);
       }).error(function (e) {

       })
   }])
</script>

后臺(tái)的數(shù)據(jù)

$res = $_GET['callback'];
echo $res."('我是跨域獲取后的數(shù)據(jù)啦啦啦')";

內(nèi)部實(shí)現(xiàn)的原理:
- 幫你創(chuàng)建了一個(gè)script標(biāo)簽 src=url
- 創(chuàng)建聲明了一個(gè)
function angular.callbacks._0(args){args}
- 服務(wù)器接收

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末讯沈,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子婿奔,更是在濱河造成了極大的恐慌缺狠,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件萍摊,死亡現(xiàn)場(chǎng)離奇詭異挤茄,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)冰木,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門穷劈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來笼恰,“玉大人,你說我怎么就攤上這事歇终∩缰ぃ” “怎么了?”我有些...
    開封第一講書人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵评凝,是天一觀的道長(zhǎng)追葡。 經(jīng)常有香客問我,道長(zhǎng)奕短,這世上最難降的妖魔是什么宜肉? 我笑而不...
    開封第一講書人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮翎碑,結(jié)果婚禮上谬返,老公的妹妹穿的比我還像新娘。我一直安慰自己日杈,他們只是感情好朱浴,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著达椰,像睡著了一般翰蠢。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上啰劲,一...
    開封第一講書人閱讀 51,631評(píng)論 1 305
  • 那天梁沧,我揣著相機(jī)與錄音,去河邊找鬼蝇裤。 笑死廷支,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的栓辜。 我是一名探鬼主播恋拍,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼藕甩!你這毒婦竟也來了施敢?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤狭莱,失蹤者是張志新(化名)和其女友劉穎僵娃,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體腋妙,經(jīng)...
    沈念sama閱讀 45,724評(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,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡愚屁,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出痕檬,到底是詐尸還是另有隱情集绰,我是刑警寧澤,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布谆棺,位于F島的核電站栽燕,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏改淑。R本人自食惡果不足惜碍岔,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望朵夏。 院中可真熱鬧蔼啦,春花似錦、人聲如沸仰猖。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽饥侵。三九已至鸵赫,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間躏升,已是汗流浹背辩棒。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留膨疏,地道東北人一睁。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像佃却,于是被迫代替她去往敵國(guó)和親者吁。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355

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

  • 由于瀏覽器的同源策略保護(hù)機(jī)制饲帅,瀏覽器不能執(zhí)行來自其他來源的腳本复凳。通過js在不同的域之間進(jìn)行數(shù)據(jù)傳輸或通信,比如用a...
    威少_吳閱讀 1,386評(píng)論 0 2
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理洒闸,服務(wù)發(fā)現(xiàn)染坯,斷路器均芽,智...
    卡卡羅2017閱讀 134,659評(píng)論 18 139
  • AJAX 原生js操作ajax 1.創(chuàng)建XMLHttpRequest對(duì)象 var xhr = new XMLHtt...
    碧玉含香閱讀 3,201評(píng)論 0 7
  • 理性經(jīng)濟(jì)學(xué)認(rèn)為丘逸,人們的一切決策應(yīng)該符合其最大利益,然而在日常生活中掀宋,人們常常有各種反成罡伲現(xiàn)象仲锄,比如在同等環(huán)境下有公司...
    LT1982閱讀 376評(píng)論 2 0
  • 時(shí)常會(huì)想,什么是永恒湃鹊,我能帶著什么儒喊,讓它可以永遠(yuǎn)陪伴我?之前買了一個(gè)silva的city指北針币呵,外面包裹著塑膠里面...
    暗影不羈閱讀 219評(píng)論 0 0