如何處理瀏覽器的跨域問題

第一種方式 CORS

首先你需要閱讀CORS得湘,
首先你需要閱讀CORS逞度,
首先你需要閱讀CORS潮针,重要的事情說3遍

當(dāng)瀏覽器發(fā)送一個跨域的xhr時伏穆,需要注意的是漩绵,首先會發(fā)送一個Request Method: OPTIONS類型的請求,如下圖

image.png

此時后臺需要處理的是杆怕,發(fā)送一些header笤虫,通知瀏覽器協(xié)商的內(nèi)容,可以進(jìn)行跨域訪問直撤,已php為例非竿,寫法如下

header('Access-Control-Allow-Origin:*'); // 可以進(jìn)行的跨域ip或域名,*代表所有
header('Access-Control-Allow-Methods:OPTIONS, GET, POST'); // 允許跨域的請求方式谋竖,options红柱,get侮东,post請求
header('Access-Control-Allow-Headers:X-Requested-With,key,token'); // 允許通過的自定義hearder字段,可以寫多個

1尽G难拧!特別需要注意的有2點(diǎn)L浮?硐小!

  1. OPTIONS的請求并不會攜帶任何額外的數(shù)據(jù),它只是一次預(yù)處理握牧,在此次請求中不能接收get,post,header等數(shù)據(jù)容诬,所以你需要做的只是設(shè)置header,然后直接返回(不要再讓程序走向具體的代碼邏輯了沿腰,你接受不到其它數(shù)據(jù)的览徒,你應(yīng)該使用一個基類來統(tǒng)一處理跨域)http的200成功狀態(tài)碼,如果你的后端程序返回了500等其他狀態(tài)碼颂龙,會導(dǎo)致真正的請求(get或post)不會再進(jìn)行下去.
  2. 如果使用的是cookiesession模式习蓬,cookie一般是不會自動攜帶的章咧,客戶端需要設(shè)置 Access-Control-Allow-Credentials: true,但此時又會出現(xiàn)另外一個問題,后端此時的Access-Control-Allow-Origin:*不可以設(shè)置為*伺帘,這是不被允許的,因?yàn)椴话踩罨怠5憧梢允褂靡粋€技巧來回避這個問題企巢,'Access-Control-Allow-Origin:動態(tài)獲取到的客戶端ip'

第二種方式枫慷,前端proxy代理,只適用于項(xiàng)目開發(fā)

當(dāng)你使用了前端的vue浪规,react,angular等框架時或听,可以直接使用他們的腳手架,腳手架提供一個配置好的webpack,可以在配置文件中的proxy添加代理地址笋婿,這樣可以避免跨域問題誉裆,如果是自己搭建的框架自行配置webpack依然可以實(shí)現(xiàn)代理

第三種方式,后端代理萌抵,可以用于項(xiàng)目部署

后臺的靜態(tài)服務(wù)器(apache,nginx)一般都帶有代理功能找御,可以自行配置,代理前端項(xiàng)目的xhr請求到真實(shí)的后臺接口地址绍填,這樣可以避免跨域問題

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市栖疑,隨后出現(xiàn)的幾起案子讨永,更是在濱河造成了極大的恐慌,老刑警劉巖遇革,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件卿闹,死亡現(xiàn)場離奇詭異揭糕,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)锻霎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進(jìn)店門著角,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人旋恼,你說我怎么就攤上這事吏口。” “怎么了冰更?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵产徊,是天一觀的道長。 經(jīng)常有香客問我蜀细,道長舟铜,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任奠衔,我火速辦了婚禮谆刨,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘归斤。我一直安慰自己痴荐,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布官册。 她就那樣靜靜地躺著生兆,像睡著了一般。 火紅的嫁衣襯著肌膚如雪膝宁。 梳的紋絲不亂的頭發(fā)上鸦难,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天,我揣著相機(jī)與錄音员淫,去河邊找鬼合蔽。 笑死,一個胖子當(dāng)著我的面吹牛介返,可吹牛的內(nèi)容都是我干的拴事。 我是一名探鬼主播,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼圣蝎,長吁一口氣:“原來是場噩夢啊……” “哼刃宵!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起徘公,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤牲证,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后关面,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體坦袍,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡十厢,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了捂齐。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蛮放。...
    茶點(diǎn)故事閱讀 40,424評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖奠宜,靈堂內(nèi)的尸體忽然破棺而出包颁,到底是詐尸還是另有隱情,我是刑警寧澤挎塌,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布徘六,位于F島的核電站,受9級特大地震影響榴都,放射性物質(zhì)發(fā)生泄漏待锈。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一嘴高、第九天 我趴在偏房一處隱蔽的房頂上張望竿音。 院中可真熱鬧,春花似錦拴驮、人聲如沸春瞬。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽宽气。三九已至,卻和暖如春潜沦,著一層夾襖步出監(jiān)牢的瞬間萄涯,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工唆鸡, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留涝影,地道東北人。 一個月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓争占,卻偏偏與公主長得像燃逻,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子臂痕,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評論 2 359

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

  • 什么是跨域 跨域伯襟,是指瀏覽器不能執(zhí)行其他網(wǎng)站的腳本。它是由瀏覽器的同源策略造成的刻蟹,是瀏覽器對JavaScript實(shí)...
    他方l閱讀 1,064評論 0 2
  • 什么是跨域 跨域逗旁,是指瀏覽器不能執(zhí)行其他網(wǎng)站的腳本。它是由瀏覽器的同源策略造成的舆瘪,是瀏覽器對JavaScript實(shí)...
    Yaoxue9閱讀 1,301評論 0 6
  • 什么是跨域 跨域片效,是指瀏覽器不能執(zhí)行其他網(wǎng)站的腳本。它是由瀏覽器的同源策略造成的英古,是瀏覽器對JavaScript實(shí)...
    HeroXin閱讀 837評論 0 4
  • 題目1.什么是同源策略? 同源策略(Same origin Policy): 瀏覽器出于安全方面的考慮淀衣,只允許與本...
    FLYSASA閱讀 1,727評論 0 6
  • 引用:http://www.dailichun.com/2017/03/22/ajaxCrossDomainSol...
    Deam無限閱讀 2,255評論 0 9