跨域解決方式

出于安全方面的考慮,瀏覽器遵從同源策略的原則。即同協議(http/https)同域名(jianshu.com/jianshu.book.com)同端口(jianshu.com/jianshu.com:8080)。不允許非同源的客戶端讀寫對方的文件,但是我們需要從服務器獲取數據,而服務器的地址和我們網站的地址不是總是一樣的,所以我們需要解決跨域的問題。

跨域的實現形式

常見的跨域解決方式有四種:CORSJSONP降域postMessage
前兩種針對網頁獲取數據的解決方式,后兩種主要針對頁面內的 iframe 元素的實現方式。

CORS

CORS 的全稱為跨域資源共享(Cross-Origin Resource Sharing),是一種 ajax 跨域請求的方式,支持現代瀏覽器,IE10 以上支持。

CORS 實現跨域的原理是:當頁面使用 XMLHttpRequest 發送請求的時候,瀏覽器會自動檢查請求地址是否符合同源策略。當請求不符合同源策略時,瀏覽器會在請求頭中添加一項 Origin ,后臺會進行判斷。如果確定接受請求,則在響應頭中添加一項 Access-Control-Allow-Origin 。瀏覽器會判斷響應頭中有沒有 Access-Control-Allow-Origin 這一項;如果有,瀏覽器會處理響應,可以拿到數據;否則將會無法拿到數據。

前端頁面及后端頁面
請求響應頭

JSONP

JSONP 是一種相對來說比較 Hack 的方法。HTML 下 script 標簽可以引入其他域下的 JS ,
利用這一點,可以實現跨域訪問,但是需要后端的接口支持。

前端頁面及后端頁面

這里將 script 標簽添加后在刪除只是為了美觀,不影響頁面整體。

返回的數據

實際上是用一個函數將返回的數據 ‘包裹’ 起來,將返回的數據作為參數傳入處理函數中。

JSONP(JSON with padding) 是通過 script 標簽加載數據的方式來獲取數據當作 JS 代碼來執行。提前在頁面上聲明一個函數,函數名通過接口傳參的方式傳送給后臺,后臺解析到函數名后在原始數據上 ‘包裹’ 這個函數名,發送給前端。

降域以及 postMessage

這兩種方式主要是針對頁面內 iframe 元素來進行的跨域實現。

降域
降域—頁面代碼

降域有一個很重要的點就是鏈接網址的后面部分一定要一樣。例如這里的 a.jianshu.comb.jianshu.com ,這里的 jianshu.com 都是相同的。將 documentdomain 屬性設置為相同部分的網址即可實現降域。

postMessage

postMessage 是將頁面內的消息作為一個 message 發送給 iframe 內的頁面,頁面內監聽 message 事件,在監聽事件內進行操作。這種跨域方式并沒有域名的限制,但是不能直接操作 iframe 內的元素,只能收到 iframe 的相應。

iframe—頁面代碼
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,363評論 6 532
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,497評論 3 416
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,305評論 0 374
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,962評論 1 311
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,727評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,193評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,257評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,411評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,945評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,777評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,978評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,519評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,216評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,642評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,878評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,657評論 3 391
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,960評論 2 373

推薦閱讀更多精彩內容

  • JSONP實現跨域 原理:網頁通過添加一個 元素,向服務器請求JSON數據,這種做法不受同源政策限制;服務器收到請...
    謝小瘋閱讀 191評論 0 0
  • 目標1:來源要可靠,如何獲得,是一種長期積累的能力 預習思考題:公司法去哪里找?領導人任期? 人大是立法機構,他是...
    吉每廿閱讀 155評論 0 1
  • 這座南方的城市浮現著遍地光華,燈紅酒綠的街道,紙醉金迷的吃喝玩樂,浮光掠影中湖水倒樓,無不昭示著城市的繁華。城市的...
    陌上飛云閱讀 176評論 0 0
  • 隨時保持對當下的覺知,當下是最富有力量的時刻,我們改變自己命運的力量也來源于當下,所以,當我發現自己在工作...
    洪興Yoga閱讀 140評論 0 2
  • 國慶這幾天休閑在家,不大想外出,一來是人多車多,到哪里都不方便;二來常年在外地出差也覺得有些累,在家陪下...
    小魚兒啦閱讀 571評論 0 2