精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Angular通過(guò)CORS實(shí)現(xiàn)跨域方案

開(kāi)發(fā) 前端
通篇寫(xiě)完才發(fā)現(xiàn)有點(diǎn)掛羊頭賣(mài)狗肉的感覺(jué),與其說(shuō)Angular的跨域方案,不如說(shuō)CORS的使用以及Angular中設(shè)置才對(duì).靠譜的前端必備...尤其是遇到不靠譜的后端時(shí).

以前有一篇很老的文章網(wǎng)上轉(zhuǎn)了很多,包括現(xiàn)在如果你百度"跨域"這個(gè)關(guān)鍵字,前幾個(gè)推薦的都是"Javascript跨域總結(jié)與解決方案".看了一下感覺(jué)手段有點(diǎn)陳舊了,有一些比如document.domain還有iframe的解決方案委實(shí)"丑陋"一些,感覺(jué)不再適用于現(xiàn)在一些項(xiàng)目中.

就拿iframe來(lái)說(shuō)作為一個(gè)前端工程師,我極為討厭iframe這種東西.它不光增加了性能上的高負(fù)荷,同時(shí)也不利于掌控。

在Angular應(yīng)用中實(shí)現(xiàn)跨域的方式相對(duì)簡(jiǎn)單,基本上通過(guò)兩種方式即可.一種是JSONP,另一種是通過(guò)CORS.前者是相對(duì)比較老的手法,后者我感覺(jué)更加給力一點(diǎn),所以本文主要說(shuō)一下Angular如何與CORS配合跨域.

能不使用JSONP就盡量不使用,這是著手于Angular跨域的一個(gè)原則吧.不管怎么說(shuō),script的標(biāo)簽嵌入感覺(jué)還是low了點(diǎn).

Angular推崇的時(shí)前后端分離,所以跨域由哪一方實(shí)現(xiàn)成為一個(gè)問(wèn)題.這個(gè)就不得不說(shuō)前端技術(shù)上的局限性,即使是相對(duì)好用的JSONP對(duì)于非GET請(qǐng)求也是無(wú)能為力的,因?yàn)樗举|(zhì)上還是通過(guò)script去get一些資源.

JSONP這種只能GET的限制,在Angular推崇RESTful風(fēng)格接口的API場(chǎng)景下,就完全制約了它的使用,總不能棄POST和PUT那些不管.并且JSONP的錯(cuò)誤處理很弱,不盡人意.總之前端實(shí)現(xiàn)跨域都有各種各樣的局限性,又比如像document.domain則只能用于主域相同,子域不同的情況.

所以總結(jié)而言,雖然前端有多種方式處理跨域,但是多而不精,缺點(diǎn)都比較明顯.相對(duì)而言更好的方式是通過(guò)后端參與處理,這樣做不僅適用性更強(qiáng),同時(shí)前端只要發(fā)送正常的Ajax請(qǐng)求即可.這樣的技術(shù)叫做CORS.

Cross-Origin Resource Sharing跨域資源共享,應(yīng)該算是現(xiàn)在最為推薦的跨域處理方案.不僅適用于各種Method,而且更加方便和簡(jiǎn)單.當(dāng)然了,這么吊的東西只有現(xiàn)代瀏覽器支持,IE8一下的老古董就不要想了.

CORS實(shí)現(xiàn)原理

雖然通過(guò)CORS實(shí)現(xiàn)跨域基本上完全由后端實(shí)現(xiàn),不過(guò)身為一個(gè)給力的前端.還是要掌握一下這一原理,以便當(dāng)你遇到不靠譜的后端時(shí),不至于...你懂得

CORS的本質(zhì)讓服務(wù)器通過(guò)新增響應(yīng)頭Access-Control-Allow-Origin,通過(guò)HTTP方式來(lái)實(shí)現(xiàn)資源共享,讓每個(gè)請(qǐng)求的服務(wù)直接返回資源.它使用了HTTP交互方式來(lái)確定請(qǐng)求源是否有資格請(qǐng)求該資源,并且通過(guò)設(shè)置HTTP Header來(lái)控制訪問(wèn)資源的權(quán)限.

具體的過(guò)程是這樣的前端發(fā)送一個(gè)正常的請(qǐng)求:

  1. $http.get('www.cros.com/api/data',{params:{  
  2.   name: '頑Shi' 
  3. }}) 

后端設(shè)置一下response的header:

  1. Access-Control-Allow-Origin: "*" 
  2. Access-Control-Allow-Methods: "GET" 
  3. Access-Control-Max-Age: "60"   

然后你觀察一下瀏覽器的行為會(huì)發(fā)現(xiàn)有趣的事,瀏覽器在沒(méi)有你干預(yù)的情況下,發(fā)現(xiàn)這是一個(gè)跨域請(qǐng)求.所以它沒(méi)有直接發(fā)送GET請(qǐng)求,而是發(fā)送了一個(gè)OPTIONS請(qǐng)求詢(xún)問(wèn)是否可以跨域訪問(wèn)該資源,這個(gè)過(guò)程我們可以稱(chēng)之為"預(yù)檢".

然后我們看到OPTIONS的response返回了類(lèi)似下面的信息:

  1. HTTP/1.1 200 OK  
  2.  
  3.  
  4. Date: Mon, 01 Dec 2013 01:15:39 GMT  
  5. Server: Apache/2.0.61 (Unix)  
  6. Access-Control-Allow-Origin: *  
  7. Access-Control-Allow-Methods: GET  
  8. Access-Control-Max-Age: 60  
  9. Content-Encoding: gzip  
  10. Content-Length: 0  
  11. Connection: Keep-Alive  
  12. Content-Type: text/text  

這里的這幾個(gè)Access頭的內(nèi)容就是服務(wù)器后端加上去的,它告訴了瀏覽器此后的60秒內(nèi),所有域都可以通過(guò)GET方法進(jìn)行跨域訪問(wèn)該資源.然后瀏覽器自動(dòng)再次發(fā)送了真正的GET請(qǐng)求,并返回對(duì)應(yīng)的結(jié)果.

注意這一過(guò)程是瀏覽器自動(dòng)實(shí)現(xiàn)的,這一點(diǎn)是不是非常棒.一些header信息的設(shè)置如下:

  1. Access-Control-Allow-Origin: <origin> | * // 授權(quán)的源控制  
  2. Access-Control-Max-Age: <delta-seconds> // 授權(quán)的時(shí)間  
  3. Access-Control-Allow-Credentials: true | false // 控制是否開(kāi)啟與Ajax的Cookie提交方式  
  4. Access-Control-Allow-Methods: <method>[, <method>]* // 允許請(qǐng)求的HTTP Method  
  5. Access-Control-Allow-Headers: <field-name>[, <field-name>]* // 控制哪些header能發(fā)送真正的請(qǐng)求     

這里還有一處需要前端工程師協(xié)作的地方就是cookie的傳遞,默認(rèn)情況下通過(guò)CORS這樣的方式是不會(huì)傳遞cookie.一般強(qiáng)制性將cookie添加到header的做法,也會(huì)被瀏覽器拒絕并報(bào)錯(cuò).上面看到了在服務(wù)器端會(huì)通過(guò)添加一個(gè)response頭,Access-Control-Allow-Credentials來(lái)控制是否允許Cookie的提交.

在Angular中我們需要進(jìn)行一些設(shè)置達(dá)到目的:

  1. $http.post(url, {withCredentials: true, ...})  
  2. // 或者  
  3. $http({withCredentials: true, ...}).post(...)  
  4. // 或者  
  5. .config(function ($httpProvider) {  
  6.   $httpProvider.defaults.withCredentials = true;  

如果是jQuery則要設(shè)置如下:

  1. $.ajax("www.cros.com/api/data", {  
  2.   type: "GET",  
  3.   xhrFields: {  
  4.     withCredentials: true 
  5.   },  
  6.   crossDomain: true,  
  7.   success: function(data, status, xhr) {  
  8.   }  
  9. }); 

CORS的過(guò)程描述完畢,在網(wǎng)上找到一張圖片:

 

CORS的分類(lèi)

如果仔細(xì)觀察瀏覽器的行為會(huì)發(fā)現(xiàn),并不是所有的跨域請(qǐng)求都會(huì)發(fā)送OPTIONS請(qǐng)求.是不是有些奇怪,這就涉及到CORS的分類(lèi),簡(jiǎn)單請(qǐng)求和復(fù)雜請(qǐng)求.

HTTP的header通常包含下面這些內(nèi)容:

  1. Accept  
  2. Accept-Language  
  3. Content-Language  
  4. Last-Event-ID  
  5. Content-Type的值僅是下列之一:  
  6.                      application/x-www-form-urlencoded  
  7.                      multipart/form-data  
  8.                      text/plain 

HTTP方法是HEAD,GET,POST之一,同時(shí)HTTP的header包含如上面所示.任何一個(gè)不滿(mǎn)足這兩種要求的請(qǐng)求,都是復(fù)雜請(qǐng)求.比如發(fā)送PUT,DELETE等HTTP動(dòng)作,或者Content-Type: application/json的內(nèi)容.

只有復(fù)雜請(qǐng)求包含"預(yù)檢"這一動(dòng)作,另外Access-Control-Max-Age應(yīng)該也會(huì)影響OPTIONS請(qǐng)求的發(fā)送.

原文鏈接:http://my.oschina.net/blogshi/blog/303758

責(zé)任編輯:林師授 來(lái)源: 頑Shi的博客
相關(guān)推薦

2021-06-25 09:04:39

Cors跨域JSONP vs CO

2021-06-15 07:32:59

Cookie和Sess實(shí)現(xiàn)跨域

2019-04-10 10:32:16

CORSNginx反向代理

2022-04-29 09:11:14

CORS瀏覽器

2021-06-10 18:11:02

Cors跨域Web開(kāi)發(fā)Cors

2023-12-20 14:42:59

2013-11-27 10:23:23

2020-08-31 19:20:33

瀏覽器CORS跨域

2021-06-17 07:15:36

Cors跨域多域名

2019-03-13 14:15:25

CORS跨域資源前端

2020-08-13 07:04:45

跨域CORS瀏覽器

2024-05-20 09:28:44

Spring客戶(hù)端瀏覽器

2024-01-31 07:55:52

2023-11-20 08:02:49

2018-01-26 08:39:03

2023-05-06 15:32:04

2018-12-12 15:50:13

2024-12-02 14:30:20

2019-11-11 17:34:16

前端開(kāi)發(fā)技術(shù)

2022-03-21 07:35:34

處理方式跨域
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

中文字幕精品视频| 欧美天天综合色影久久精品| 久久免费国产视频| 在线观看免费视频污| 成人在线播放免费观看| 成人精品电影在线观看| 国产成人久久精品| 欧洲猛交xxxx乱大交3| 色愁久久久久久| 欧美精品色综合| 亚洲人成人77777线观看| 精品人妻一区二区三区换脸明星 | 亚洲青色在线| 日韩av在线直播| 九色porny自拍| 91美女精品| 亚洲欧洲精品天堂一级| 蜜桃成人免费视频| 国产偷人妻精品一区二区在线| 国产精品99一区二区三区| 精品国产一区二区三区av性色| 四虎免费在线观看视频| 深夜福利视频在线观看| 国产原创一区二区三区| 日本电影亚洲天堂| 玖玖爱免费视频| 欧美偷拍自拍| 亚洲精品色婷婷福利天堂| 日本美女久久久| 外国电影一区二区| 无吗不卡中文字幕| 欧美交换配乱吟粗大25p| 国产二区视频在线观看| 激情综合网最新| 国产成人精品电影久久久| 少妇愉情理伦三级| 亚洲va久久| 亚洲第一网站免费视频| 色综合五月婷婷| 精品三区视频| 精品动漫一区二区| 亚洲成色最大综合在线| 日韩二区三区| 久草在线在线精品观看| 国产成人在线播放| 亚洲va在线观看| 91精品国产麻豆国产在线观看| 欧美本精品男人aⅴ天堂| 青青青免费在线| 特级毛片在线| 一区二区在线观看视频在线观看| 狠狠色综合网站久久久久久久| 成人免费毛片视频| 午夜在线视频观看日韩17c| 欧美激情欧美狂野欧美精品| 在线免费观看亚洲视频| 中出一区二区| 欧美日韩成人在线播放| 91视频免费在线看| 欧美日韩亚洲一区在线观看| 欧美高清在线视频观看不卡| 欧美成人精品欧美一| 亚洲欧美综合| 欧美高跟鞋交xxxxxhd| 久久午夜鲁丝片午夜精品| 欧美日韩国产亚洲一区| 国外视频精品毛片| 日韩视频免费观看高清| 国产女优一区| 国产suv精品一区二区| 潘金莲一级淫片aaaaaa播放| 欧美日韩国产一区精品一区| 色综合天天狠天天透天天伊人| 一级肉体全黄裸片| 欧美在线电影| 日韩精品在线视频| 免费观看黄网站| 亚洲综合色婷婷在线观看| 欧美亚洲国产bt| 在线能看的av网站| 色8久久影院午夜场| 欧美网站一区二区| www.欧美激情.com| 精品国产一区二区三区成人影院 | 极品少妇xxxx偷拍精品少妇| 91色视频在线导航| 国精品人妻无码一区二区三区喝尿 | 日韩av在线看| 成年女人免费视频| 妖精一区二区三区精品视频| 尤物精品国产第一福利三区| 野外性满足hd| 日韩免费久久| 久久久久久尹人网香蕉| 日韩精品一区二区亚洲av观看| 国产欧美日本| 国产精品亚洲美女av网站| 国产免费黄色录像| 99视频在线观看一区三区| 四虎一区二区| 日本一级理论片在线大全| 欧美性xxxxxxx| 欧美视频亚洲图片| 免费一区二区三区视频导航| 欧美成人精品一区二区三区| 国产又黄又爽又色| 经典一区二区三区| 久久www免费人成精品| 免费观看在线午夜影视| 国产精品激情偷乱一区二区∴| 亚洲高清视频一区| 日本在线视频观看| 精品日本美女福利在线观看| 黄网站欧美内射| 四虎国产精品免费久久| 91精品国产综合久久久久| 蜜臀av一区二区三区有限公司| 一区二区美女| 亚洲人成电影在线观看天堂色| 国产av自拍一区| 国产精品激情| 国产日韩在线视频| 三级国产在线观看| 亚洲国产精品久久艾草纯爱| 不卡中文字幕在线观看| 狠狠做深爱婷婷综合一区| 久久久亚洲精选| 又骚又黄的视频| 99精品国产99久久久久久白柏| 鲁鲁狠狠狠7777一区二区| 韩国福利在线| 综合电影一区二区三区| 青青在线视频免费| 日本久久成人网| 欧美激情欧美激情| 无码人妻黑人中文字幕| www.在线成人| 精品国产av无码一区二区三区| 忘忧草在线影院两性视频| 日韩一区二区三区在线视频| 中文文字幕文字幕高清| 欧美在线网站| 91色在线观看| 国产原创视频在线观看| 欧美性猛交一区二区三区精品| 性鲍视频在线观看| 99久久久久| 国产免费一区二区三区在线能观看| 亚洲AV无码国产精品午夜字幕| 91在线porny国产在线看| 国产精品视频网站在线观看 | 7m精品国产导航在线| zzijzzij亚洲日本成熟少妇| 中文字幕人妻互换av久久| 日本一区二区在线不卡| 免费人成自慰网站| aaa国产精品| 欧美激情日韩图片| 二区三区在线视频| 国产精品每日更新| 日本韩国欧美在线观看| 日韩三级毛片| 欧美一级视频免费在线观看| 日韩大胆视频| 日本精品一区二区三区高清 | 99久久精品久久久久久清纯| 日韩精品第一页| 激情亚洲小说| 久久精品2019中文字幕| 99精品视频在线播放免费| 亚洲激情男女视频| 国产一线在线观看| 国产精品丝袜xxxxxxx| 欧美色图亚洲自拍| 国产资源一区| 欧美疯狂性受xxxxx另类| 天天操天天干天天| 91久久精品国产91性色tv| 亚洲av毛片基地| 精久久久久久久久久久| 九一免费在线观看| 任我爽精品视频在线播放| 国产成人aa精品一区在线播放 | 亚洲精品天天看| 黄色在线观看免费| 国产麻豆精品theporn| 国产资源在线免费观看| 亚洲动漫精品| 91日本视频在线| 国产高清自产拍av在线| 一色桃子一区二区| 午夜精品久久久久久久99热黄桃 | 日韩av高清在线观看| 中文字幕日韩精品久久| 国产劲爆久久| 久久久久久久久久国产精品| 毛片在线能看| 91麻豆精品国产自产在线| 色婷婷在线观看视频| 国产精品理论在线观看| 中文字幕免费高清视频| 男人操女人的视频在线观看欧美| 欧洲在线视频一区| 深夜福利视频一区二区| 日韩在线观看精品| 欧美在线观看在线观看| 日韩欧美色综合网站| 日日夜夜操视频| 亚洲国产精品嫩草影院| 久久久久99精品成人| jiyouzz国产精品久久| 日本人69视频| 午夜在线精品| 久草视频国产在线| 亚洲成a人片77777在线播放| 91视频国产高清| 亚洲四虎影院| 久久免费视频在线| 国产一区久久精品| 日韩免费在线观看| 91福利免费视频| 91久久精品一区二区| 国产69精品久久久久久久久久| 久久久久国产精品麻豆| 天天色综合社区| aa国产精品| 日本一区免费在线观看| 国产精品天天看天天狠| 成人欧美在线观看| av成人在线观看| 日韩av免费在线| 美女91在线看| 中文字幕精品—区二区| 成人av一区二区三区在线观看| 精品美女永久免费视频| 劲爆欧美第一页| 91蝌蚪porny| 国产精品无码电影| 国产91精品精华液一区二区三区| 欧美黄色免费影院| 99热在线成人| 婷婷久久伊人| 精品国产不卡| 日韩中文一区二区三区| 国产一区二区三区四区五区| 91成人免费看| 视频亚洲一区二区| 99久久伊人精品影院| 国产免费av国片精品草莓男男| 青青久久av北条麻妃海外网| av在线加勒比| 97超级碰在线看视频免费在线看| 欧美激情视频在线播放| 少妇高潮久久77777| 亚洲国产精品久久久久爰性色| 91久久精品午夜一区二区| 中文字幕免费观看| 欧美色偷偷大香| 黄色在线免费观看| 91久久免费观看| 国产稀缺真实呦乱在线| 午夜视频在线观看一区二区| 99久在线精品99re8热| 欧美日韩亚洲成人| 久久久久久在线观看| 欧洲一区在线电影| 91麻豆国产视频| 日韩欧美激情四射| 婷婷五月综合激情| 亚洲一区二区久久久| 日本在线免费中文字幕| 美女福利精品视频| av老司机在线观看| 欧美日韩爱爱视频| 日韩大片免费观看| 国产美女91呻吟求| 欧美日本三级| 91久久嫩草影院一区二区| 高清不卡一区| 国产亚洲精品美女久久久m| 国产一区二区三区亚洲综合| 九色91在线| 亚洲成年人网站在线观看| 日本熟妇成熟毛茸茸| 欧美日韩亚洲激情| 一级淫片免费看| 欧美色手机在线观看| 精人妻无码一区二区三区| 欧美三级韩国三级日本一级| a级片在线视频| 精品视频在线导航| 日本视频不卡| 久久免费国产视频| 丁香高清在线观看完整电影视频| 欧美精品做受xxx性少妇| 麻豆免费在线| 成人激情视频在线播放| 人人香蕉久久| 国产女人18毛片| 老司机亚洲精品| 少妇丰满尤物大尺度写真| 久久久九九九九| 精品人妻在线播放| 欧美三级蜜桃2在线观看| 欧美自拍第一页| 久久久国产影院| 亚洲承认视频| 国产美女99p| 手机亚洲手机国产手机日韩| 91猫先生在线| 国产乱码精品1区2区3区| 91porn在线| 国产精品色在线| 青青操免费在线视频| 色悠悠久久综合| 中文av免费观看| 亚洲精品国精品久久99热一| 国产专区在线| 午夜免费久久久久| 日本在线成人| 韩国成人av| 成人免费在线观看av| 秋霞成人午夜鲁丝一区二区三区| 日韩国产第一页| 一区二区三区日韩精品| 怡红院男人天堂| 亚洲免费精彩视频| 午夜视频成人| 热99精品只有里视频精品| 成人自拍在线| 国产精品一二三在线观看| 久久国产三级精品| 国产chinese中国hdxxxx| 亚洲乱码日产精品bd| 一级片视频播放| 日日摸夜夜添一区| 高清av一区二区三区| 免费成人av网站| 国产日韩欧美| 亚洲欧美手机在线| 国产精品久久久久久久久果冻传媒| 欧美日韩亚洲国产另类| 欧美久久久一区| 日本中文字幕视频在线| 97视频在线观看视频免费视频| 99riav视频一区二区| 欧美中文娱乐网| 韩日精品视频| 四虎成人免费视频| 亚洲福利视频导航| 污视频软件在线观看| 日日噜噜噜夜夜爽亚洲精品 | 欧美乱大交xxxxx| 国产一区二区视频在线看| 色婷婷777777仙踪林| 国产成人在线视频免费播放| 亚洲性69xxxbbb| 精品176二区| 91久久国产婷婷一区二区| 久久久久久久久国产一区| 浮妇高潮喷白浆视频| 久久这里只精品最新地址| www.色国产| 色琪琪综合男人的天堂aⅴ视频| 僵尸再翻生在线观看| 精品久久久三级| 久久精品主播| 国产又粗又长又黄的视频| 欧美精品电影在线播放| 成人在线观看免费网站| 电影午夜精品一区二区三区| 亚洲电影在线| 中文精品在线观看| 欧美日韩黄色一区二区| 国产在线自天天| 成人av在线网址| 影音先锋中文字幕一区| 右手影院亚洲欧美| 欧美日韩精品在线视频| 国产视频精品久久| 91在线观看免费高清完整版在线观看| 精品一级毛片| 在线观看av免费观看| 亚洲成人免费视| 国产露出视频在线观看| 亚洲一区二区免费| 99视频+国产日韩欧美| 亚洲色图第四色| 日韩欧美高清一区| 欧美国产大片| 黄色一级视频播放| 国内不卡的二区三区中文字幕 | www.久久.com| 久久国产精品一区二区三区 | 免费在线观看毛片网站| 国产精品美女一区二区三区| 中文在线观看免费高清| 欧美高清视频在线| 成人亚洲一区二区| 国产精品嫩草69影院|