瀏覽器跨域與處理方案

1.為什么會出現(xiàn)跨域問題

瀏覽器基于安全性考慮(減少一些攻擊發(fā)生的可能性)不允許非同源(同源是指協(xié)議、域名奋救、端口三者相同,即使兩個不同的域名指向同一個ip地址也是非同源反惕。主域名相同二級域名不同也為不同源例如 https://abc.com 與https//:www.abc.com)請求發(fā)生尝艘。
其實雖然瀏覽器報錯,但是實際請求已經(jīng)到了后端層面,只是瀏覽器不允許,攔截了請求

2.解決方案

2.1 jsonp
利用js文件請求不受同源策略限制實現(xiàn),但是只能發(fā)送get請求,并且需要后端配合實現(xiàn),現(xiàn)在基本不使用這種手段

2.2 cors 常用

跨源資源共享標準新增了一組 HTTP 標頭字段姿染,允許服務(wù)器聲明哪些源站通過瀏覽器有權(quán)限訪問哪些資源背亥。另外,規(guī)范要求,對那些可能對服務(wù)器數(shù)據(jù)產(chǎn)生副作用的 HTTP 請求方法(特別是 GET 以外的 HTTP 請求狡汉,或者搭配某些 MIME 類型POST 請求)娄徊,瀏覽器必須首先使用 OPTIONS 方法發(fā)起一個預(yù)檢請求(preflight request),從而獲知服務(wù)端是否允許該跨源請求盾戴。服務(wù)器確認允許之后寄锐,才發(fā)起實際的 HTTP 請求。在預(yù)檢請求的返回中捻脖,服務(wù)器端也可以通知客戶端锐峭,是否需要攜帶身份憑證(例如 CookieHTTP 認證相關(guān)數(shù)據(jù))。

CORS 請求失敗會產(chǎn)生錯誤可婶,但是為了安全沿癞,在 JavaScript 代碼層面無法獲知到底具體是哪里出了問題。你只能查看瀏覽器的控制臺以得知具體是哪里出現(xiàn)了錯誤矛渴。

后端配置請求頭Access-Control-Allow-Origin 把當前域名添加到上面,則瀏覽器就能正常發(fā)送請求獲得服務(wù)器返回結(jié)果
將請求分為簡單請求與復雜請求
簡單請求不會發(fā)送options預(yù)檢請求,會直接請求 服務(wù)器,服務(wù)器允許則訪問成功,不允許則失敗

復雜請求會先發(fā)送預(yù)檢請求,看服務(wù)器是否允許此次請求,允許發(fā)送真正請求,不允許則請求失敗

2.3 代理
2.3.1反向代理(負載均衡)

通過nginx 在前端所在服務(wù)器加一個nginx對部分請求進行轉(zhuǎn)發(fā),相當于多了一層中間人在傳話,前端工程跟nginx所在服務(wù)器一個域名就不會跨域了


反向代理.png

反向代理 服務(wù)器對用戶不可見,用戶不清楚真正的訪問服務(wù)器那一臺

2.3.2正向代理(vpn)

正向代理就是在本地客戶端建立一個攔截,對于部分請求從本地,直接連接到例如vpn對應(yīng)的服務(wù)器,再由服務(wù)器發(fā)送真正的請求到真實請求服務(wù)器


正向代理.png

正向代理,用戶對服務(wù)器不可見,服務(wù)器并不知道當前的用戶到底是誰

2.3.3 node
一些基于node的工程(例如nuxt)可以通過node進行一個代理轉(zhuǎn)發(fā),本質(zhì)也是代理

3. 瀏覽器允許的一些跨域

3.1 js文件加載

jsonp的實現(xiàn)也是基于瀏覽器允許非同源的js資源加載的前提

3.2 css文件加載
3.3 new Image 創(chuàng)建對象

可以用來實現(xiàn)埋點,但是只能發(fā)送get請求椎扬,且不能與服務(wù)器進行數(shù)據(jù)上的雙向交流,即只能 給服務(wù)器傳遞數(shù)據(jù)而不能服務(wù)器給瀏覽器返回數(shù)據(jù)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末具温,一起剝皮案震驚了整個濱河市蚕涤,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌铣猩,老刑警劉巖揖铜,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異达皿,居然都是意外死亡天吓,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進店門峦椰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來龄寞,“玉大人,你說我怎么就攤上這事汤功∥镆兀” “怎么了?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵滔金,是天一觀的道長色解。 經(jīng)常有香客問我,道長鹦蠕,這世上最難降的妖魔是什么冒签? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮钟病,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己肠阱,他們只是感情好票唆,可當我...
    茶點故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著屹徘,像睡著了一般走趋。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上噪伊,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天簿煌,我揣著相機與錄音,去河邊找鬼鉴吹。 笑死姨伟,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的豆励。 我是一名探鬼主播夺荒,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼良蒸!你這毒婦竟也來了技扼?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤嫩痰,失蹤者是張志新(化名)和其女友劉穎剿吻,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體串纺,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡丽旅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了造垛。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片魔招。...
    茶點故事閱讀 40,424評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖五辽,靈堂內(nèi)的尸體忽然破棺而出办斑,到底是詐尸還是另有隱情,我是刑警寧澤杆逗,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布乡翅,位于F島的核電站,受9級特大地震影響罪郊,放射性物質(zhì)發(fā)生泄漏蠕蚜。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一悔橄、第九天 我趴在偏房一處隱蔽的房頂上張望靶累。 院中可真熱鬧腺毫,春花似錦、人聲如沸挣柬。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽邪蛔。三九已至急黎,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間侧到,已是汗流浹背勃教。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留匠抗,地道東北人故源。 一個月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像戈咳,于是被迫代替她去往敵國和親心软。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,435評論 2 359

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