<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          面試官:如何解決跨域問題(建議收藏)

          共 8902字,需瀏覽 18分鐘

           ·

          2021-01-19 08:23

          點(diǎn)擊上方[全棧開發(fā)者社區(qū)]右上角[...][設(shè)為星標(biāo)?]

          前后端分離大勢(shì)所趨,跨域問題更是老生常談,隨便用標(biāo)題去google或百度一下,能搜出一大片解決方案,那么為啥又要寫一遍呢,不急往下看。


          問題背景:


          Same Origin Policy,譯為“同源策略”。


          它是對(duì)于客戶端腳本(尤其是JavaScript)的重要安全度量標(biāo)準(zhǔn),其目的在于防止某個(gè)文檔或者腳本從多個(gè)不同“origin”(源)裝載。


          它認(rèn)為自任何站點(diǎn)裝載的信賴內(nèi)容是不安全的。當(dāng)被瀏覽器半信半疑的腳本運(yùn)行在沙箱時(shí),它們應(yīng)該只被允許訪問來自同一站點(diǎn)的資源,而不是那些來自其它站點(diǎn)可能懷有惡意的資源。


          注:具有相同的Origin,也即是擁有相同的協(xié)議、主機(jī)地址以及端口。一旦這三項(xiàng)數(shù)據(jù)中有一項(xiàng)不同,那么該資源就將被認(rèn)為是從不同的Origin得來的,進(jìn)而不被允許訪問。


          CORS就是為了解決SOP問題而生的,當(dāng)然CORS不是唯一的解決方案,不過這里不贅述其他解決辦法了。


          CORS簡(jiǎn)介:


          CORS是一個(gè)W3C標(biāo)準(zhǔn),全稱是"跨域資源共享”(Cross-origin resource sharing)。


          它允許瀏覽器向跨源(協(xié)議 + 域名 + 端口)服務(wù)器,發(fā)出XMLHttpRequest請(qǐng)求,從而克服了AJAX只能同源使用的限制。


          CORS需要瀏覽器和服務(wù)器同時(shí)支持。它的通信過程,都是瀏覽器自動(dòng)完成,不需要用戶參與。


          對(duì)于開發(fā)者來說,CORS通信與同源的AJAX/Fetch通信沒有差別,代碼完全一樣。


          瀏覽器一旦發(fā)現(xiàn)請(qǐng)求跨源,就會(huì)自動(dòng)添加一些附加的頭信息,有時(shí)還會(huì)多出一次附加的請(qǐng)求,但用戶不會(huì)有感覺。


          因此,實(shí)現(xiàn)CORS通信的關(guān)鍵是服務(wù)器。只要服務(wù)器實(shí)現(xiàn)了CORS接口,就可以跨源通信。


          瀏覽器將CORS請(qǐng)求分成兩類:簡(jiǎn)單請(qǐng)求(simple request)和非簡(jiǎn)單請(qǐng)求(not-so-simple request)。


          瀏覽器發(fā)出CORS簡(jiǎn)單請(qǐng)求,只需要在頭信息之中增加一個(gè)Origin字段。


          瀏覽器發(fā)出CORS非簡(jiǎn)單請(qǐng)求,會(huì)在正式通信之前,增加一次OPTIONS查詢請(qǐng)求,稱為"預(yù)檢"請(qǐng)求(preflight)。


          瀏覽器先詢問服務(wù)器,當(dāng)前網(wǎng)頁所在的域名是否在服務(wù)器的許可名單之中,以及可以使用哪些HTTP動(dòng)詞和頭信息字段。


          只有得到肯定答復(fù),瀏覽器才會(huì)發(fā)出正式的XMLHttpRequest請(qǐng)求,否則就報(bào)錯(cuò)。


          簡(jiǎn)單請(qǐng)求就是HEAD、GET、POST請(qǐng)求,并且HTTP的頭信息不超出以下幾種字段 Accept、Accept-Language、Content-Language、Last-Event-ID、Content-Type?


          注:Content-Type:只限于三個(gè)值application/x-www-form-urlencoded、multipart/form-data、text/plain


          反之,就是非簡(jiǎn)單請(qǐng)求。


          其實(shí)實(shí)現(xiàn)CORS很簡(jiǎn)單,就是在服務(wù)端加一些響應(yīng)頭,并且這樣做對(duì)前端來說是無感知的,很方便。


          詳解響應(yīng)頭:


          • Access-Control-Allow-Origin 該字段必填。它的值要么是請(qǐng)求時(shí)Origin字段的具體值,要么是一個(gè)*,表示接受任意域名的請(qǐng)求。

          • Access-Control-Allow-Methods 該字段必填。它的值是逗號(hào)分隔的一個(gè)具體的字符串或者*,表明服務(wù)器支持的所有跨域請(qǐng)求的方法。注意,返回的是所有支持的方法,而不單是瀏覽器請(qǐng)求的那個(gè)方法。這是為了避免多次"預(yù)檢"請(qǐng)求。

          • Access-Control-Expose-Headers 該字段可選。CORS請(qǐng)求時(shí),XMLHttpRequest對(duì)象的getResponseHeader()方法只能拿到6個(gè)基本字段:Cache-Control、Content-Language、Content-Type、Expires、Last-Modified、Pragma。如果想拿到其他字段,就必須在Access-Control-Expose-Headers里面指定。

          • Access-Control-Allow-Credentials 該字段可選。它的值是一個(gè)布爾值,表示是否允許發(fā)送Cookie.默認(rèn)情況下,不發(fā)生Cookie,即:false。對(duì)服務(wù)器有特殊要求的請(qǐng)求,比如請(qǐng)求方法是PUT或DELETE,或者Content-Type字段的類型是application/json,這個(gè)值只能設(shè)為true。如果服務(wù)器不要瀏覽器發(fā)送Cookie,刪除該字段即可。

          • Access-Control-Max-Age 該字段可選,用來指定本次預(yù)檢請(qǐng)求的有效期,單位為秒。在有效期間,不用發(fā)出另一條預(yù)檢請(qǐng)求。


          順便提一下,如果在開發(fā)中,發(fā)現(xiàn)每次發(fā)起請(qǐng)求都是兩條,一次OPTIONS,一次正常請(qǐng)求,注意是每次,那么就需要配置Access-Control-Max-Age,避免每次都發(fā)出預(yù)檢請(qǐng)求。


          解決辦法:


          解決辦法有三種:


          第一種辦法:


          import?org.springframework.context.annotation.Configuration;
          import?org.springframework.web.servlet.config.annotation.CorsRegistry;
          import?org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
          @Configuration
          public?class?CorsConfig?implements?WebMvcConfigurer?{
          ????@Override
          ????public?void?addCorsMappings(CorsRegistry?registry)?{
          ????????registry.addMapping("/**")
          ????????????????.allowedOrigins("*")
          ????????????????.allowedMethods("GET",?"HEAD",?"POST",?"PUT",?"DELETE",?"OPTIONS")
          ????????????????.allowCredentials(true)
          ????????????????.maxAge(3600)
          ????????????????.allowedHeaders("*");
          ????}
          }


          這種方式是全局配置的,網(wǎng)上也大都是這種解決辦法,但是很多都是基于舊的spring版本,比如:


          https://blog.csdn.net/tiangongkaiwu152368/article/details/81099169


          文中WebMvcConfigurerAdapter在spring5.0已經(jīng)被標(biāo)記為Deprecated,點(diǎn)開源碼可以看到:


          /**
          ?*?An?implementation?of?{@link?WebMvcConfigurer}?with?empty?methods?allowing
          ?*?subclasses?to?override?only?the?methods?they're?interested?in.
          ?*
          ?*?@author?Rossen?Stoyanchev
          ?*?@since?3.1
          ?*?@deprecated?as?of?5.0?{@link?WebMvcConfigurer}?has?default?methods?(made
          ?*?possible?by?a?Java?8?baseline)?and?can?be?implemented?directly?without?the
          ?*?need?for?this?adapter
          ?*/

          @Deprecated
          public?abstract?class?WebMvcConfigurerAdapter?implements?WebMvcConfigurer?{}


          像這種過時(shí)的類或者方法,spring的作者們一定會(huì)在注解上面說明原因,并告訴你新的該用哪個(gè),這是非常優(yōu)秀的編碼習(xí)慣,點(diǎn)贊!


          spring5最低支持到j(luò)dk1.8,所以注釋中明確表明,你可以直接實(shí)現(xiàn)WebMvcConfigurer接口,無需再用這個(gè)適配器,因?yàn)閖dk1.8支持接口中存在default-method。


          第二種辦法:


          import?org.springframework.context.annotation.Configuration;
          import?javax.servlet.*;
          import?javax.servlet.annotation.WebFilter;
          import?javax.servlet.http.HttpServletResponse;
          import?java.io.IOException;
          @WebFilter(filterName?=?"CorsFilter?")
          @Configuration
          public?class?CorsFilter?implements?Filter?{
          ????@Override
          ????public?void?doFilter(ServletRequest?req,?ServletResponse?res,?FilterChain?chain)?throws?IOException,?ServletException?{
          ????????HttpServletResponse?response?=?(HttpServletResponse)?res;
          ????????response.setHeader("Access-Control-Allow-Origin","*");
          ????????response.setHeader("Access-Control-Allow-Credentials",?"true");
          ????????response.setHeader("Access-Control-Allow-Methods",?"POST,?GET,?PATCH,?DELETE,?PUT");
          ????????response.setHeader("Access-Control-Max-Age",?"3600");
          ????????response.setHeader("Access-Control-Allow-Headers",?"Origin,?X-Requested-With,?Content-Type,?Accept");
          ????????chain.doFilter(req,?res);
          ????}
          }


          這種辦法,是基于過濾器的方式,方式簡(jiǎn)單明了,就是在response中寫入這些響應(yīng)頭,好多文章都是第一種和第二種方式都叫你配置,其實(shí)這是沒有必要的,只需要一種即可。


          這里也吐槽一下,大家不求甚解的精神。


          第三種辦法:


          public?class?GoodsController?{
          ????@CrossOrigin(origins?=?"http://localhost:4000")
          ????@GetMapping("goods-url")
          ????public?Response?queryGoodsWithGoodsUrl(@RequestParam?String?goodsUrl)?throws?Exception?{}
          }??


          沒錯(cuò)就是**@CrossOrigin**注解,點(diǎn)開注解


          @Target({?ElementType.METHOD,?ElementType.TYPE?})
          @Retention(RetentionPolicy.RUNTIME)
          @Documented
          public?@interface?CrossOrigin?{}


          從元注解@Target可以看出,注解可以放在method、class等上面,類似RequestMapping,也就是說,整個(gè)controller下面的方法可以都受控制,也可以單個(gè)方法受控制。


          也可以得知,這個(gè)是最小粒度的cors控制辦法了,精確到單個(gè)請(qǐng)求級(jí)別。


          以上三種方法都可以解決問題,最常用的應(yīng)該是第一種、第二種,控制在自家?guī)讉€(gè)域名范圍下足以,一般沒必要搞得太細(xì)。


          這三種配置方式都用了的話,誰生效呢,類似css中樣式,就近原則,懂了吧。


          所以在開發(fā)新項(xiàng)目時(shí),不需要等聯(lián)調(diào)時(shí)候,讓前端來找你了,我早就解決了跨域問題。

          收外國(guó)男騙中國(guó)妹子的炮?天朝竟有這樣一幫「女權(quán)組織」 2018-03-19 INSIGHT視界 From 酷玩實(shí)驗(yàn)室 微信號(hào):coollabs 其實(shí)我讀書的時(shí)候 也曾經(jīng)想過做一個(gè)女權(quán)主義者 但是后來發(fā)生了一些事情 讓我選擇了放棄 簡(jiǎn)單來說是這么一個(gè)事情:我發(fā)現(xiàn) 女權(quán)對(duì)于一些中國(guó)人來說是信仰 但是對(duì)另一些中國(guó)人來說是生意 所謂的“偽女權(quán)”“女權(quán)癌” 大概就是這么回事 盡管早就有這樣的思想準(zhǔn)備 但讓我沒想到的是 這兩天,知乎上曝光了一件大事 還是讓我三觀震碎 我沒想到,這些“偽女權(quán)” 竟然已經(jīng)形成了黑色產(chǎn)業(yè)鏈 讓人細(xì)思恐極—— 國(guó)內(nèi)竟然有一群人 打著“女權(quán)主義”的名號(hào) 從事著組織賣淫的事情 在中國(guó)女生不知情的情況下 把她們賣給外國(guó)男人!事情是這樣的:根據(jù)知乎用戶伊利丹·怒風(fēng)的爆料 他在知乎和一個(gè)偽女權(quán)主義者 吵了起來 一開始,他可能以為這只是一個(gè) 腦子比較軸的偽女權(quán)主義者 所以兩人就吵了一通 本來,他以為就是撕個(gè)逼而已 沒想到的是 這個(gè)偽女權(quán)主義者 可不是什么好惹的主 這個(gè)自稱為“瑪麗女王”的人 竟然在半個(gè)月中 持續(xù)不斷地騷擾他 而最夸張的是 瑪麗女王聲稱 自己有能力 讓伊利丹的QQ號(hào) 在5天之內(nèi)被封掉 到這里為止 伊利丹一直以為 他不過是碰到了一個(gè)杠精 但是萬萬沒想到 5天之后 他的QQ號(hào)竟然真的被永久封禁了!說真的,這就有點(diǎn)嚇人了 這個(gè)不起眼的瑪麗女王 竟然還能操控別人的QQ賬號(hào)被封?難不成,她真的背后有人?伊利丹這才意識(shí)到 自己好像惹到了一個(gè)組織 他去扒了扒這個(gè)瑪麗女王的QQ空間 這才發(fā)現(xiàn) 自己簡(jiǎn)直捅出一個(gè)馬蜂窩:這個(gè)人平時(shí)干的 竟然是把中國(guó)女生 賣給外國(guó)男人的皮肉生意!真的,我本來以為 我是一個(gè)見過不少套路的人 但沒想到 這一套操作 真的是驚為天人 簡(jiǎn)單來說是這樣的 首先,瑪麗女王自稱是“女權(quán)主義者” 但是實(shí)際上她的言論 宣傳的卻是 中國(guó)男人配不上中國(guó)女人 她甚至惡意辱罵中國(guó)男人 恨不得中國(guó)男人全部死光 連自己的爸爸都不放過 但是,這么做對(duì)她有什么好處呢?很簡(jiǎn)單 罵完中國(guó)男人以后 接下來她就說—— 既然中國(guó)男人這么差勁 那就找外國(guó)男人吧!于是,她就經(jīng)常發(fā)布外國(guó)男人的介紹 看起來是一個(gè)熱心的媒婆 還在各種QQ和微信群里 散播此類信息 但是看到這里 我們不難發(fā)現(xiàn)有點(diǎn)問題 看看其中這些不堪入目的措辭 這并不是普通的介紹男友啊!這簡(jiǎn)直是在拉皮條啊!果然,伊利丹發(fā)現(xiàn) 瑪麗女王真的在 拉皮條的過程中 收外國(guó)男人的錢!下面是聊天記錄實(shí)錘:而且,請(qǐng)注意—— 在這個(gè)過程中 她會(huì)收外國(guó)男人的錢 但是錢不給中國(guó)女生 卻落到了她自己的腰包 于是一個(gè)詭異的情況出現(xiàn)了:中國(guó)妹子 并不知道收錢這回事 還以為是正常交友 而外國(guó)男人 卻都交了錢 很可能認(rèn)為自己是在買春!額,也就是說 在中國(guó)女孩不知情的情況下 她們被“賣”給了外國(guó)男人 而好處費(fèi) 卻全都進(jìn)了瑪麗女王的腰包... 我真的是沒見過這種操作 這說輕了是騙炮 說重了,已經(jīng)可以算是賣淫了吧?我想請(qǐng)熟悉刑法的朋友們看看 這個(gè)瑪麗女王 至少應(yīng)該算是個(gè) 介紹組織賣淫罪吧?而且,從伊利丹曝光的資料看來 這個(gè)組織規(guī)模不小 瑪麗女王甚至把外國(guó)男生的信息 建了一個(gè)完整的表格 有詳細(xì)的個(gè)人資料、照片 可以說 是一條非常完整的產(chǎn)業(yè)鏈 那如果按照這樣操作 外國(guó)男人都是來嫖的 中國(guó)女生卻不知道 還以為是要跟他們談戀愛 那雙方難道不會(huì)穿幫嗎?恩,在這方面 瑪麗女王早有對(duì)策 根據(jù)知乎一位 從事過這個(gè)產(chǎn)業(yè)的匿名用戶提供的信息 針對(duì)這種情況 瑪麗女王們 還會(huì)手把手地教外國(guó)男人 怎么快速擺脫女生的糾纏 怎么調(diào)教中國(guó)女生 怎么讓女生覺得自己很可愛 可以說 各種套路一應(yīng)俱全 甚至還可以開發(fā)票!看到這里 她們背后的產(chǎn)業(yè)就非常清楚了 這個(gè)瑪麗女王 她根本就不是什么女權(quán)主義者 而是打著女權(quán)主義的口號(hào) 販賣中國(guó)女生的人販子 一方面 她們通過辱罵中國(guó)男人 吸引對(duì)外國(guó)男人感興趣的中國(guó)女生 另一方面 她們向外國(guó)男人收錢 然后把中國(guó)女生賣給他們!圖片來源:知乎@渭水徐工 而可憐的中國(guó)妹子們 還以為自己是在 追求男女平權(quán) 其實(shí),不過是淪為了 這些老鴇的賺錢工具 伊利丹把這整個(gè)事情 寫出來以后 在知乎、微博引起了巨大的關(guān)注 關(guān)于其中提到的 伊利丹的QQ被永久封禁的問題 騰訊經(jīng)過核查 目前也有了結(jié)果:經(jīng)調(diào)查,是瑪麗女王利用偽造證據(jù) 惡意舉報(bào)了伊利丹的QQ號(hào) 目前,騰訊已經(jīng)將伊利丹的QQ解封 同時(shí)封禁了瑪麗女王等人的 兩個(gè)QQ賬號(hào) 警方也就此事立案?jìng)刹榱?相信很快就會(huì)有結(jié)果 這個(gè)事情算是告一段落了 但是在我看來 卻有一件事讓我無法釋懷:為什么“女權(quán)主義”竟然會(huì)和 辱罵中國(guó)男性等同起來?為什么“和外國(guó)男人交友” 竟然還能演變成 一個(gè)免費(fèi)的陪睡組織?我想,這個(gè)瑪麗女王 也許只是一個(gè) 發(fā)現(xiàn)了惡性賺錢模式的生意人 但是在這背后隱藏的 其實(shí)是一個(gè)很深的問題:為什么有不少中國(guó)女人 越來越看不上中國(guó)男人 甚至覺得嫁給外國(guó)男人 是一種時(shí)尚?這里面的原因可能非常復(fù)雜 我這里先提供一個(gè)思路 供大家討論:我發(fā)現(xiàn) 現(xiàn)在中國(guó)很多大型的女權(quán)組織 背后都有著西方勢(shì)力的影子 她們打著女權(quán)的名號(hào) 為自己謀取暴利 為西方國(guó)家從事破壞活動(dòng) 而那些真正為女性平權(quán)而奔走的人 卻得不到應(yīng)有的幫助 我之所以這樣說 并不是信口開河 而是有充足的證據(jù) 有一個(gè)非常有名的民間女權(quán)組織 叫做“女權(quán)之聲” 它一再聲稱 自己只是一個(gè)自發(fā)的民間組織 致力于促進(jìn)男女平等的 它所有的微博賬號(hào)、微信賬號(hào) 全部都是由一個(gè) 叫做婦女傳媒監(jiān)測(cè)網(wǎng)絡(luò)的創(chuàng)辦的 而這個(gè)婦女傳媒監(jiān)測(cè)網(wǎng)絡(luò) 有這么多媒體產(chǎn)品 那它的錢都是哪里來的呢?從她們介紹的合作組織里 我們可以清楚地找到 她們的資助者—— 竟然有西方的福特基金會(huì) 有人也許會(huì)問 收了西方的錢怎么了?中國(guó)的組織不能收西方的錢嗎?然而,她們不只是收了西方的錢而已 女權(quán)之聲組織里 有一個(gè)人叫做鄭楚然 她除了女權(quán)運(yùn)動(dòng)之外 沒有任何其他工作 表面上,是一個(gè)全職的女權(quán)工作者 在2015年的時(shí)候 她還因?yàn)閷め呑淌?被警察拘留過30多天 甚至在她被拘留的時(shí)候 希拉里還借題發(fā)揮 指責(zé)中國(guó)侵犯人權(quán)、壓制民主 一個(gè)中國(guó)的小小民間組織的首領(lǐng) 在互聯(lián)網(wǎng)上的粉絲還沒有我多 竟然能得到希拉里這個(gè)級(jí)別的關(guān)注?我真的是驚掉了下巴 這樣看來 我離希拉里也不是很遠(yuǎn)了??而不止是希拉里 這樣一個(gè)明明思想上毫無建樹的人 卻被西方媒體BBC評(píng)為了 全球百大思想家 圖:鄭楚然在王寶強(qiáng)事件中發(fā)表的言論 除此以外 更讓人匪夷所思的 是她們平時(shí)就喜歡攻擊政府 甚至于,她們還會(huì)試圖分裂我們國(guó)家 比如,女權(quán)之聲這個(gè)組織里 著名的女權(quán)斗士洪理達(dá) 就曾經(jīng)轉(zhuǎn)發(fā)著名的港獨(dú)媒體 Hong Kong Free Press的言論 甚至曾公開發(fā)表過 支持藏獨(dú)、港獨(dú)、臺(tái)獨(dú)的言論 她也經(jīng)常和鄭楚然混在一起 我很想不通 如果她們真的只是單純的女權(quán)主義者 為何要發(fā)表分裂國(guó)家的言論?為何要支持藏獨(dú)、港獨(dú)、臺(tái)獨(dú)?我只能說,這大概就叫 拿人家的手短,吃人家的嘴軟吧 以前,我在接觸中國(guó)的女權(quán)組織時(shí) 我就覺得很奇怪 她們都喜歡聲稱 自己是不盈利的非政府組織 但是她們無論是宣傳 還是組織各類活動(dòng) 都需要大量的錢 如果她們真的不盈利 那這些錢都是哪里來的呢?而這些外國(guó)的金主 他們也更加不可能是什么慈善組織 大發(fā)善心來給中國(guó)人投錢 每一分投出去的錢 一定都是要有回報(bào)的 那么,他們的回報(bào)是什么呢?他們給中國(guó)的“女權(quán)組織”投錢 能得到什么利益呢?聯(lián)想到中國(guó)網(wǎng)絡(luò)上 如火如荼的對(duì)中國(guó)男人的討伐 我只能說,細(xì)思恐極 我絕不是危言聳聽 因?yàn)槲覀兙涂床贿h(yuǎn)的鄰國(guó)日本 近些年來日本對(duì)于西方的崇拜 可謂深入骨髓 已經(jīng)到了崇洋媚外的程度 而這其中 當(dāng)然也包括對(duì)白人男性的崇拜 甚至在2016年一個(gè)瑞士白人 發(fā)了一個(gè)視頻,赤裸裸的說 “在東京,只要你是白人, 做什么都可以” 視頻里面他在日本便利店 隨意的親吻不認(rèn)識(shí)的收銀員女孩 在酒吧把不認(rèn)識(shí)的日本女孩 按向自己的褲襠 而日本女孩回應(yīng)的卻是諂媚的笑容 我想,并不會(huì)有那么多中國(guó)人 真正被西方偽女權(quán)主義控制 但是,我們要警惕的是 別在你自己都沒有察覺的時(shí)候 被別有用心的人洗了腦 更有甚者 別在你自己都不知道的情況下 被別人賣給了外國(guó)男人 還去幫他數(shù)錢 本文系授權(quán)發(fā)布,F(xiàn)rom 酷玩實(shí)驗(yàn)室,微信號(hào):coollabs,歡迎分享到朋友圈,未經(jīng)許可不得轉(zhuǎn)載,INSIGHT視界 誠(chéng)意推薦 Forwarded from Official Account 酷玩實(shí)驗(yàn)室 酷玩實(shí)驗(yàn)室 Learn More Scan QR Code via WeChat to follow Official Account 采集文章采集樣式近似文章查看封面

          作者:telami

          telami.cn/2019/springboot-resolve-cors/


          覺得本文對(duì)你有幫助?請(qǐng)分享給更多人

          關(guān)注「全棧開發(fā)者社區(qū)」加星標(biāo),提升全棧技能

          本公眾號(hào)會(huì)不定期給大家發(fā)福利,包括送書、學(xué)習(xí)資源等,敬請(qǐng)期待吧!

          如果感覺推送內(nèi)容不錯(cuò),不妨右下角點(diǎn)個(gè)在看轉(zhuǎn)發(fā)朋友圈或收藏,感謝支持。


          好文章,留言、點(diǎn)贊、在看和分享一條龍吧??

          瀏覽 72
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  七区无码 | aaa国产精品 | 伊人av大香蕉 | 91人妻无码成人精品一区91 | 97成人毛片 |