跨域解決方案

1.使用Jsonp解決跨域(不推薦寡夹,因?yàn)橹恢С謌et請(qǐng)求,不支持post請(qǐng)求)

1.前端AJAX請(qǐng)求dataType改為jsonp魂角,且增加jsonp:"jsonpCallback"

$.ajax({
    type:"GET",
    async:"false",
    url:"127.0.0.1:80/xxxx",
    dataType:"jsonp",
    jsonp:"jsonpCallback",//服務(wù)端用于接收callback調(diào)用的function名的參數(shù)
    success:function(data){
        alert("data");
    },
    erro:function(){
        alert("erro");
    }

})

2.請(qǐng)求的URL后面會(huì)增加一個(gè)jsonpCallback=xxx的隨機(jī)數(shù)智绸,服務(wù)端返回值時(shí)瞧栗,需要把jsonpCallBack的隨機(jī)數(shù)一起返回
3.type改為ipost請(qǐng)求時(shí),但是實(shí)際請(qǐng)求依舊是get

2.使用HttpClient進(jìn)行轉(zhuǎn)發(fā)(不推薦挣惰,因?yàn)樾实团贡撸瑫?huì)發(fā)送兩次請(qǐng)求)

1.A項(xiàng)目需要調(diào)用B項(xiàng)目的接口是,A項(xiàng)目前端ajax調(diào)用后端URL竖幔,如192.168.1.1:8080/forwardB
2.在forwardB中是偷,使用HttpClient調(diào)用192.168.1.1:8081/xxxx

相當(dāng)于發(fā)送兩次請(qǐng)求,但是注意保證域名和端口號(hào)一致問(wèn)題
好處:安全饿幅,隱蔽了真實(shí)的接口調(diào)用

3.設(shè)置響應(yīng)頭允許跨域(推薦,適合小公司解決跨域問(wèn)題)

1.通過(guò)fileter過(guò)濾器中寫(xiě)入ACCESS-Control-Allow的頭信息透乾,進(jìn)行跨域訪問(wèn),代碼如下:

public class CrossDomainFilter implements Filter{
    @Override
    public void destroy() {
        // TODO Auto-generated method stub
    }
 
    @Override
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {    
        //設(shè)置跨域請(qǐng)求  
        HttpServletResponse response = (HttpServletResponse) res; 
        //此處ip地址為需要訪問(wèn)服務(wù)器的ip及端口號(hào)
        response.setHeader("Access-Control-Allow-Origin", "http://192.168.1.1:8080");
        response.setHeader("Access-Control-Allow-Credentials", "true");
        response.setHeader("Access-Control-Allow-Methods", "GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS, PATCH");
        response.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type,Token,Accept, Connection, User-Agent, Cookie");
        response.setHeader("Access-Control-Max-Age", "3628800");   
  
        System.out.println("設(shè)置跨域請(qǐng)求");  
        chain.doFilter(req, response);    
    }
 
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        // TODO Auto-generated method stub
    }

}

<!--"Access-Control-Allow-Origin"表示的是訪問(wèn)服務(wù)端的ip地址及端口號(hào)磕秤,也可以設(shè)置為*表示所有域都可以通過(guò)乳乌;

"Access-Control-Allow-Credentials"表示的是跨域的ajax中可以攜帶cookie,此時(shí)第一項(xiàng)設(shè)置不能為*市咆,需指定域名汉操;

"Access-Control-Allow-Methods"表示的是允許跨域的請(qǐng)求方法;

"Access-Control-Allow-Headers"表示的是允許跨域請(qǐng)求包含content-type頭蒙兰;

"Access-Control-Allow-Max-Age"表示的是在3628800秒內(nèi)磷瘤,不需要再發(fā)送預(yù)檢驗(yàn)請(qǐng)求,可以緩存該結(jié)果搜变,一般默認(rèn)采缚。-->

2.web.xml配置filter

    <!-- 跨域設(shè)置 -->
    <filter>
        <filter-name>crossFilter</filter-name>
        <filter-class>com.chinamobile.bcop.console.security.filter.CrossDomainFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>crossFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

4.適應(yīng)Nginx搭建API網(wǎng)關(guān)接口(強(qiáng)烈推薦,因?yàn)楸WC域名和端口一致挠他,以項(xiàng)目區(qū)分方向代理到真實(shí)的服務(wù)器地址)

1.原理:保證域名和端口都是相同的,根據(jù)項(xiàng)目不同名稱(chēng)使用nginx進(jìn)行轉(zhuǎn)發(fā)到真實(shí)的服務(wù)器地址
2.注意殖侵,保證域名和端口都是相同的贸呢,只是項(xiàng)目不同
3.這種方案是可以徹底解決網(wǎng)站的跨域問(wèn)題的,而且可以保證整套系統(tǒng)的安全性問(wèn)題

如客戶端請(qǐng)求api.xxxx.com/a,nginx根據(jù)/a拢军,轉(zhuǎn)發(fā)到項(xiàng)目a(192.168.1.1:8080),
客戶端請(qǐng)求api.xxxx.com/b贮尉,nginx根據(jù)/b,轉(zhuǎn)發(fā)到項(xiàng)目b(192.168.1.1:8081)

5.使用Zuul微服務(wù)搭建API網(wǎng)關(guān)(強(qiáng)烈推薦朴沿,Spring Cloud)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末猜谚,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子赌渣,更是在濱河造成了極大的恐慌魏铅,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,386評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件坚芜,死亡現(xiàn)場(chǎng)離奇詭異览芳,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)鸿竖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)沧竟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)铸敏,“玉大人,你說(shuō)我怎么就攤上這事悟泵¤颈剩” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,704評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵糕非,是天一觀的道長(zhǎng)蒙具。 經(jīng)常有香客問(wèn)我,道長(zhǎng)朽肥,這世上最難降的妖魔是什么禁筏? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,702評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮衡招,結(jié)果婚禮上篱昔,老公的妹妹穿的比我還像新娘。我一直安慰自己始腾,他們只是感情好州刽,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著窘茁,像睡著了一般怀伦。 火紅的嫁衣襯著肌膚如雪脆烟。 梳的紋絲不亂的頭發(fā)上山林,一...
    開(kāi)封第一講書(shū)人閱讀 51,573評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音邢羔,去河邊找鬼驼抹。 笑死,一個(gè)胖子當(dāng)著我的面吹牛拜鹤,可吹牛的內(nèi)容都是我干的框冀。 我是一名探鬼主播,決...
    沈念sama閱讀 40,314評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼敏簿,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼明也!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起惯裕,我...
    開(kāi)封第一講書(shū)人閱讀 39,230評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤温数,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后蜻势,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體撑刺,經(jīng)...
    沈念sama閱讀 45,680評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評(píng)論 3 336
  • 正文 我和宋清朗相戀三年握玛,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了够傍。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片甫菠。...
    茶點(diǎn)故事閱讀 39,991評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖冕屯,靈堂內(nèi)的尸體忽然破棺而出寂诱,到底是詐尸還是另有隱情,我是刑警寧澤愕撰,帶...
    沈念sama閱讀 35,706評(píng)論 5 346
  • 正文 年R本政府宣布刹衫,位于F島的核電站,受9級(jí)特大地震影響搞挣,放射性物質(zhì)發(fā)生泄漏带迟。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評(píng)論 3 330
  • 文/蒙蒙 一囱桨、第九天 我趴在偏房一處隱蔽的房頂上張望仓犬。 院中可真熱鬧,春花似錦舍肠、人聲如沸搀继。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,910評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)叽躯。三九已至,卻和暖如春肌括,著一層夾襖步出監(jiān)牢的瞬間点骑,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,038評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工谍夭, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留黑滴,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,158評(píng)論 3 370
  • 正文 我出身青樓紧索,卻偏偏與公主長(zhǎng)得像袁辈,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子珠漂,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評(píng)論 2 355

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