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

又是跨域,這次搞定它!

網絡 通信技術
在平常工作中,我們不止一次聽到過跨域這個詞,尤其是和前端打交道的時候;當然安全部門有時候也會刷存在感,推給你 XSS這樣看起來高大上的名詞;再就是從http協議升級成https協議的時候,也會碰到。

[[397699]]

本文轉載自微信公眾號「小姐姐味道」,作者小姐姐養的狗02號。轉載本文請聯系小姐姐味道公眾號。

世界上沒有沒碰到跨域的程序員。

在平常工作中,我們不止一次聽到過跨域這個詞,尤其是和前端打交道的時候;當然安全部門有時候也會刷存在感,推給你 XSS這樣看起來高大上的名詞;再就是從http協議升級成https協議的時候,也會碰到。

在后端開發中,并沒有跨域這么麻煩的東西。因為只要網絡連的通,我們就能夠構造請求。所謂的跨域,是對于瀏覽器來說的,限制了各種條條框框,以便能夠安全的馴服javaScript這只野獸。

換句話說,脫離了主流的瀏覽器,并沒有跨域這么一說。就像是楚河漢界,脫離了棋盤,就是個談資而已。

所以來吧,看看瀏覽器為了達到自己的目的,都干了些啥。

1. 跨域和同源

所謂的同源,指的是兩個URL的協議(protocal)、域名(host)、端口(port)都相同的情況,可以說是非常嚴格了。下面給出一個示例。

對于http://xjjdog.cn/index.html來說,下面展示了4種不同的情況。

【1】https://xjjdog.cn/index.html 因為協議不同,一個是http一個是https,所以它們是不同源的。

【2】https://xjjdog.cn:8080/index.html 因為端口不同,一個是80,一個是8080,所以它們是不同源的。

【3】http://mall.xjjdog.cn/index.html 因為主機不同,所以依然是不同源的

【4】http://xjjdog.cn/index.htm 這種情況,因為只有目錄是不同的,所以是同源的。

那么在不同源(跨域)的情況下,js的執行都有哪些限制呢?

首先是存儲資源不共享。比如Cookie、LocalStorage 和 IndexDB(瀏覽器數據庫)等,都不能相互讀取。

其次是跨域的情況下,DOM和Javascript對象都無法獲取。

更要命的是,Ajax請求無法發送,限制了前端程序員的發揮。

但隨著業務的增長和域名的增加,跨域的需求是越來越多,瀏覽器的默認行為,成為了這個功能的攔路虎。所以我們需要尋找有效的方法,來突破這條加載自己脖子上的鎖套。

2. CORS 跨域資源共享

前端工程師很聰明,發明了各種各樣的請求方法。常見的有:

  1. jsonp 使用javascript的代理模式,動態的創建script標簽。比如常見的百度統計代碼,雖然不同源,但是你仍然能把信息發送過去。jsonp只能支持GET請求,不支持POST請求。
  2. document.domain + iframe 這個是利用iframe加載主域名相同的資源。
  3. location.hash + iframe 依然是利用iframe等,使用的是全局對象,用起來很繞。
  4. postMessage Html5的新功能,專門用來解決跨域。我們只要發送端擁有某個窗口的有效js的句柄,就可以通過這套機制向該窗口發送任意長度的文本信息。但編程的時候,容易忘掉origin的判斷,造成安全問題。

這些方法都需要寫很多代碼,還容易出錯,調試起來也麻煩,所以現在用的最多的,是CORS。

這項技術是W3C的標準,前端代碼幾乎不需要做任何改動,瀏覽器可以自動完成。聽起來非常的魔幻,但它其實是在HTTP協議上做文章的,要在Http的頭里面,加入一些附加信息。只要服務器支持,就實現了跨域操作。所以通信的關鍵就有前端轉移到了服務器的配置上。 目前,幾乎所有的瀏覽器都支持。

拿Nginx來說,要解決跨域,就得加一些配置。

  1. location / { 
  2.      if ($request_method = 'OPTIONS') { 
  3.         add_header 'Access-Control-Allow-Origin' '*'
  4.         add_header 'Access-Control-Allow-Credentials' true
  5.         add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'
  6.         # 
  7.         # Custom headers and headers various browsers *should* be OK with but aren't 
  8.         # 
  9.         add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range'
  10.         # 
  11.         # Tell client that this pre-flight info is valid for 20 days 
  12.         # 
  13.         add_header 'Access-Control-Max-Age' 1728000; 
  14.         add_header 'Content-Type' 'text/plain; charset=utf-8'
  15.         add_header 'Content-Length' 0; 
  16.         return 204; 
  17.      } 
  18.      if ($request_method = 'POST') { 
  19.         add_header 'Access-Control-Allow-Origin' '*'
  20.         add_header 'Access-Control-Allow-Credentials' true
  21.         add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'
  22.         add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range'
  23.         add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range'
  24.      } 
  25.      if ($request_method = 'GET') { 
  26.         add_header 'Access-Control-Allow-Origin' '*'
  27.         add_header 'Access-Control-Allow-Credentials' true
  28.         add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'
  29.         add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range'
  30.         add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range'
  31.      } 

因為跨域,針對于正常的瀏覽器限制來說,相當于開了一條特許通道,所以它的配置非常的細膩。其中最重要的,就是Access-Control-Allow-Origin,我們一般設置成*一了百了,但它可以指定具體的請求來源,也更加安全。所以,在dev環境調試時,為了方便開發,可以設置成*,而線上最好設置成具體的domain。

Access-Control-Request-Method指定了跨域請求所允許的HTTP方法,我們這里是GET、POST、OPTIONS等。

Access-Control-Allow-Headers,表明服務器支持的所有頭信息字段,用在預檢請求中。值得注意的是,一些簡單的頭部信息,比如Content-Language、Content-Type等,不需要特別聲明。如果你想偷懶,當然也有更好的方法。

  1. Access-Control-Allow-Headers: * 

那么,http的交互,是如何執行的呢?

我們假定瀏覽器訪問的網址是http://xjjdog.cn,當瀏覽器訪問的時候,它發起了一個指向http://xdddog.cn的Ajax請求。正常情況下,這是不能通過的。于是瀏覽器在請求頭中,自動添加了一行。

  1. Origin: http://xjjdog.cn 

xdddog.cn的服務器(nginx)看到這個請求,一對比,可以啊兄弟,我允許你訪問。

  1. Access-Control-Allow-Origin: * 
  2. Access-Control-Allow-Credentials:true 

那請求就可以正常進行下去,否則會觸發XHR的onerror。

請求類型分為簡單請求和復雜請求,細究起來一點意思都沒有,建議訪問https://www.test-cors.org/進行實際的測試來觀測。

我們上面介紹的,其實就是簡單請求的過程。

對于復雜請求來說,多了一步使用OPTIONS的預檢操作,流程其實也差不多。

 

3. 其他地方怎么配置?

由于CORS應用非常廣泛,所以現在所有的服務器端軟件,都提供了對它的支持。對于tomcat來說,配置就簡單的多,配置一個filter就可以了。

  1. <filter> 
  2.   <filter-name>CorsFilter</filter-name
  3.   <filter-class>org.apache.catalina.filters.CorsFilter</filter-class> 
  4. </filter> 
  5. <filter-mapping> 
  6.   <filter-name>CorsFilter</filter-name
  7.   <url-pattern>/*</url-pattern> 
  8. </filter-mapping> 

 

對于SpringBoot服務來說,就更加簡單,直接通過注解就能完成。

@CrossOrigin(origins = "*",maxAge = 3600)

當然,它的屬性也有很多。

  • origins 所有支持域的集合,也就是Access-Control-Allow-Origin
  • allowedHeaders 允許請求頭重的header,不設置的話就是全部支持
  • exposedHeaders 響應頭中允許訪問的header
  • methods 請求支持的方法
  • allowCredentials 是否允許cookie隨請求發送,使用時必須指定具體的域
  • default 預請求的結果的有效期,默認30分鐘

所以,在SpringBoot下實現跨域,就是這么任性的簡單。

4. End

跨域問題,在前后分離的架構下,幾乎100%都會遇到。跨域訪問的限制,是瀏覽器做的文章,我們可以使用CORS來繞過去。既然是繞,那就不要一股腦的全部設置成*,雖然這樣搞非常的讓人省心。

而有時候你確實會遇到連CORS都處理不了的跨域問題。在這種情況下,最好要求你的客戶,升級一下支持的瀏覽器試試。畢竟有些特立獨行的瀏覽器,是非常IE的。

作者簡介:小姐姐味道 (xjjdog),一個不允許程序員走彎路的公眾號。聚焦基礎架構和Linux。十年架構,日百億流量,與你探討高并發世界,給你不一樣的味道。我的個人微信xjjdog0,歡迎添加好友,進一步交流。

 

責任編輯:武曉燕 來源: 小姐姐味道
相關推薦

2025-01-08 07:10:00

2016-11-01 21:51:03

phpjavascript

2019-04-10 10:32:16

CORSNginx反向代理

2021-04-27 15:20:41

人工智能機器學習技術

2021-06-15 07:32:59

Cookie和Sess實現跨域

2025-10-27 05:00:00

C語言CPUUnix

2019-09-29 10:45:46

C語言CPU編譯器

2022-12-29 16:59:14

代碼審查編程

2024-05-20 09:28:44

Spring客戶端瀏覽器

2021-06-10 18:11:02

Cors跨域Web開發Cors

2016-09-19 13:52:26

Javascript跨域前端

2017-08-20 12:49:59

瀏覽器跨域服務器

2017-06-06 14:13:16

2009-12-08 14:43:04

WCF跨域

2020-08-13 07:04:45

跨域CORS瀏覽器

2020-12-31 08:14:39

VueAxiosJavaScript

2023-05-04 16:00:48

ChatGPTPHPWordPress

2017-05-25 09:45:35

2014-08-19 10:36:02

AngularCORS

2017-08-22 15:58:56

點贊
收藏

51CTO技術棧公眾號

国产精品免费丝袜| 国产综合色产| 欧美日韩亚州综合| 黄瓜视频免费观看在线观看www| 一级片视频播放| 欧美va亚洲va日韩∨a综合色| 欧美大胆人体bbbb| 日韩中文字幕二区| caoporn免费在线| gogogo免费视频观看亚洲一| 国产ts一区二区| 手机在线中文字幕| 欧美黑人巨大videos精品| 欧美在线一区二区| 成人免费网站入口| 成人精品一区二区| 成人久久久精品乱码一区二区三区 | 久久精品欧美一区二区三区麻豆| 91精品视频一区| 日韩欧美国产亚洲| 婷婷亚洲五月| 亚洲欧美另类自拍| 亚洲av综合色区无码另类小说| 久久青青视频| 亚洲在线观看免费视频| 视频一区不卡| 午夜av免费在线观看| 国产一区二区在线影院| 国产97在线观看| 国产一级生活片| 欧美成人激情| 亚洲日本欧美中文幕| 又大又长粗又爽又黄少妇视频| 亚洲精品国产嫩草在线观看| 亚洲成人午夜影院| 黑人巨茎大战欧美白妇| 尤物在线视频| 国产欧美一区二区三区在线看蜜臀 | 四虎影视国产精品| 日韩欧美精品中文字幕| 少妇一晚三次一区二区三区| 91视频在线观看| 久久只精品国产| 国产精品免费一区二区三区在线观看 | 国产精品福利观看| 亚洲欧美精品一区二区三区| 亚洲精品乱码| 高清一区二区三区日本久| 翔田千里88av中文字幕| 日韩欧美高清在线播放| 亚洲视频日韩精品| 日本丰满少妇裸体自慰| 超碰成人福利| 日韩精品一区二区三区在线观看| 亚洲av无日韩毛片久久| 欧美黄色a视频| 欧美中文字幕亚洲一区二区va在线 | 国产美女久久精品香蕉69| 中文字幕国产在线观看| 夜夜嗨av一区二区三区网站四季av| 欧美日韩国产成人在线观看| www青青草原| 欧美精品三级| 欧美夫妻性生活视频| xxxx日本少妇| 国精品一区二区三区| 欧美多人爱爱视频网站| 久久久久久久国产精品毛片| 欧美三级不卡| 久久久久久久999精品视频| 精品在线视频观看| 亚洲美女网站| 日韩免费在线播放| 成年人视频免费| 免费高清在线视频一区·| 国产精品久久久久久久久男| 91中文字幕在线播放| 精品制服美女丁香| 91久色国产| 国精产品一品二品国精品69xx| hitomi一区二区三区精品| 精品无码久久久久久久动漫| 久久精品国产亚洲a∨麻豆| 国产人妖乱国产精品人妖| 亚洲一区二区在线观| av网站网址在线观看| 亚洲一级二级三级在线免费观看| 日本中文字幕亚洲| 我爱我色成人网| 欧美日韩国产大片| 日本一区二区在线观看视频| 色狠狠久久av综合| 色偷偷综合社区| 欧美日韩精品在线观看视频 | 欧美精彩视频一区二区三区| 在线看视频不卡| 色呦呦在线视频| 都市激情亚洲色图| 最新av免费在线观看| 91综合精品国产丝袜长腿久久| 日韩禁在线播放| fc2ppv在线播放| 亚洲激情女人| 国产精品青青在线观看爽香蕉| xxxwww在线观看| 久久久久久久久一| 久久久久久久免费视频| 少妇视频一区| 91精品国产免费| 久久久久久久久免费看无码| 欧美第一精品| 国产91|九色| 国产99对白在线播放| 2021中文字幕一区亚洲| 一区二区三区四区免费观看| 成人免费网站视频| 欧美一区二区福利在线| www.男人天堂| 99tv成人| 国产999在线观看| 国产成人毛毛毛片| 中文字幕不卡的av| 波多野结衣综合网| 欧洲一区在线| 中文字幕欧美国内| 欧美三级一区二区三区| 国产成人精品亚洲午夜麻豆| 亚洲v国产v在线观看| 美女高潮在线观看| 日韩欧美一级在线播放| 日韩免费av一区| 日韩精品1区2区3区| 国产一区二区在线网站| 国产成人无吗| 欧美日韩1234| 九九热免费在线| 久久久噜噜噜| 久久久精彩视频| 成年人国产在线观看| 91精品国产麻豆国产自产在线 | 最新精品国偷自产在线| 久久久久久久一区二区三区| www.av网站| 亚洲少妇中出一区| 九九热免费在线观看| 日本99精品| 激情av在线| 日本成人在线一区| 久久影院理伦片| 最新国产乱人伦偷精品免费网站| 亚洲欧美制服中文字幕| 国产五月天婷婷| 国产精品一二三在| 精品日韩在线播放| 国产精品日本一区二区三区在线| 少妇高潮 亚洲精品| 中文字幕在线日本| 久久精品一区四区| 国产超碰在线播放| 欧美最新另类人妖| 国产精品精品视频| 淫片在线观看| 欧美高清视频不卡网| 日韩在线视频免费看| 另类小说欧美激情| 日本美女爱爱视频| 日韩激情综合| 欧美激情按摩在线| 人人妻人人澡人人爽精品日本| 亚洲福利电影网| 国产黄色网址在线观看| 日韩精品免费专区| 性欧美精品一区二区三区在线播放| 主播大秀视频在线观看一区二区| 中文字幕视频在线免费欧美日韩综合在线看 | 国产suv精品一区二区6| 国产一区 在线播放| 超碰一区二区三区| 青青草原成人在线视频| 国产亚洲依依| 欧美嫩在线观看| 久久r这里只有精品| 成人午夜电影小说| av天堂永久资源网| 成人短片线上看| 91在线精品播放| 成人影院在线视频| 亚洲人成网站777色婷婷| 亚洲天堂手机版| 亚洲夂夂婷婷色拍ww47| 在线免费观看黄色小视频| 免费在线观看精品| 中文字幕日韩精品无码内射| 亚洲+小说+欧美+激情+另类 | 波多野结衣人妻| 亚洲四区在线观看| 国产精品无码电影| 另类中文字幕网| 精品视频免费在线播放| 日韩综合网站| 国产伦精品一区二区三区高清版 | 9191在线| 亚洲激情 国产| 亚洲永久精品视频| 精品久久久久久久久久国产| 国产wwwwxxxx| 91色九色蝌蚪| 免费国偷自产拍精品视频| 性欧美videos另类喷潮| 亚洲av综合色区| 国产一区二区三区91| 97人人模人人爽视频一区二区| 在线观看特色大片免费视频| 美女av一区二区| 国产精品一区二区婷婷| 精品国产免费人成电影在线观看四季| 无码人妻丰满熟妇精品| 伊人久久综合| 亚洲精品一区av在线播放| 中文字幕二区三区| 精品成人在线视频| 丁香花五月激情| 国产精品国产自产拍高清av王其| 黄色网址在线视频| 国产精品1024久久| 欧美三级午夜理伦三级富婆| 国产日韩1区| 妺妺窝人体色www看人体| 日本高清免费电影一区| 麻豆精品传媒视频| 乱亲女h秽乱长久久久| 91精品久久香蕉国产线看观看 | 91精品久久久久久久久久入口| 乱人伦视频在线| 欧美精品福利在线| 色噜噜狠狠狠综合欧洲色8| 在线看日韩欧美| 久久综合九色综合久| 亚洲精品在线一区二区| 99在线观看免费| 欧美精品tushy高清| 在线观看视频二区| 欧美性做爰猛烈叫床潮| 一级一片免费看| 日韩欧美成人网| 国产毛片aaa| 午夜精品在线看| 日本系列第一页| 午夜一区二区三区在线观看| 久久久精品一区二区涩爱| 亚洲精品视频观看| 欧美一区二区三区爽爽爽| 中文字幕一区视频| 99国产精品无码| 综合久久久久久| 午夜国产福利一区二区| 亚洲精品一二三区| 久久久久久蜜桃| 亚洲国产精品久久艾草纯爱| 中文在线观看免费网站| 亚洲国产精品嫩草影院| 亚洲日本韩国在线| 色噜噜久久综合| 中文字幕乱码无码人妻系列蜜桃| 欧美唯美清纯偷拍| 国产精品久久无码一三区| 欧美精品v国产精品v日韩精品| 99在线观看免费| 精品免费一区二区三区| 午夜国产在线观看| 伊人久久久久久久久久久久久| 成人免费视频| 久久久精品国产网站| 欧美videosex性欧美黑吊| 久久久久久九九九| 日本免费久久| 国产日本欧美一区二区三区在线| 精品成人18| caoporen国产精品| 西野翔中文久久精品字幕| 日本一区二区三区视频免费看| 日韩1区在线| 人人妻人人澡人人爽欧美一区| 一区二区国产精品| 精品999在线| 国产精品99久久久久久有的能看| 亚洲一级Av无码毛片久久精品| 91麻豆swag| 手机免费观看av| 一区二区高清免费观看影视大全 | 国产在线成人| 成人免费无码av| 国产另类ts人妖一区二区| 国产不卡一二三| 中文字幕在线一区免费| 日韩精品人妻中文字幕| 欧美一a一片一级一片| 精品毛片一区二区三区| 亚洲欧美日韩在线一区| 在线观看三级视频| 国产精品96久久久久久又黄又硬| 国产一区二区三区亚洲综合| 久热这里只精品99re8久| 四虎8848精品成人免费网站| 农民人伦一区二区三区| 久久国产三级精品| 欧美一区二区免费在线观看| 国产精品乱子久久久久| 成人精品免费在线观看| 69精品人人人人| 久久久久久青草| 欧美日韩国产二区| 精品久久在线| 精品一区二区三区免费毛片| 亚洲高清影视| 天天爽天天爽夜夜爽| 波多野结衣中文字幕一区| 天天看天天摸天天操| 欧美自拍偷拍午夜视频| 日韩资源在线| 欧美激情一级二级| 999精品嫩草久久久久久99| 欧美一区二区三区四区五区六区 | 久久成人一区二区| 三上悠亚激情av一区二区三区| 成人女人免费毛片| 婷婷综合网站| 亚洲精品性视频| 日本一区二区久久| 久久久久久久久久久影院 | 黄色三级网站在线观看| 日韩中文字幕在线看| 日韩一区二区三区在线免费观看| 国产综合精品一区二区三区| 欧美黄色精品| 性色av浪潮av| 亚洲人一二三区| 艳妇乳肉豪妇荡乳av| 一区二区在线视频| 五月激情久久| 日韩av一区二区三区在线| 亚洲欧美日韩国产一区| 国产婷婷在线观看| 亚洲一区二区欧美激情| 亚洲欧美激情在线观看| 九九久久综合网站| 最新精品在线| 东北少妇不带套对白| 国产99久久久国产精品| 精品少妇久久久| 亚洲福利视频网| 91福利区在线观看| 国产伦精品一区二区三区免费视频| 黄色综合网站| 老司机午夜免费福利| 亚洲国产欧美在线| 人妻精品无码一区二区| 久久久视频精品| 美女网站色精品尤物极品姐弟| 免费看国产一级片| 久久亚洲一级片| 国产精品欧美综合| 按摩亚洲人久久| 国产精品亚洲欧美日韩一区在线| 9l视频自拍9l视频自拍| 国产毛片精品视频| 日本一二三区视频| 日韩经典中文字幕| 8av国产精品爽爽ⅴa在线观看| 亚洲蜜桃av| 国产成人一级电影| 青青草av在线播放| 在线播放亚洲激情| 国产精品视频一区二区三区综合| 欧美中日韩在线| 久久综合狠狠综合| 中文字幕精品一区二区精| 欧美成人性色生活仑片| 国产精品调教| 任你操这里只有精品| 日韩理论在线观看| 丰满大乳国产精品| 国产脚交av在线一区二区| 日韩一区电影| 国偷自产av一区二区三区麻豆| 精品电影在线观看| 91亚洲精选| 国产精品10p综合二区| 久久性色av| 特级片在线观看| 亚洲欧美日本另类| 国产日韩一区二区三免费高清| 91九色丨porny丨国产jk| 国产亚洲一本大道中文在线| 91禁在线观看| 97免费中文视频在线观看| 成人一区二区| 国产精品一区二区人妻喷水| 欧美日韩精品久久久| 国产理论在线|