摘要:遇到了前端跨域請(qǐng)求的問題。所以機(jī)智的我想到了,這家伙不就是拿來搞反向代理的嗎真是機(jī)智如我有了這個(gè)思路,做起來就簡(jiǎn)單了。直接在監(jiān)聽端口的中添加一個(gè)重新加載然后就把之前的跨域請(qǐng)求變成了的非跨域請(qǐng)求。
在慕課網(wǎng)上看了高并發(fā)的課程,準(zhǔn)備用spring+Mybaits來開發(fā)新的項(xiàng)目。遇到了前端跨域請(qǐng)求的問題。
服務(wù)器上nginx+tomcat,其中nginx監(jiān)聽80端口,tomcat監(jiān)聽8080端口。
因?yàn)閷?duì)前端不熟悉,以為用ajax就可以不需要callback,然而前端的同學(xué)說不跨域的情況下才不需要callback,讓我在返回的json里加上。可是我剛剛學(xué)會(huì)了最基本的spring-mvc用法,根本不知道怎么加上callback
網(wǎng)上到時(shí)找到一些可行的代碼,差不多這個(gè)樣子:
來源:http://quarterlifeforjava.ite...
@RequestMapping(method=RequestMethod.GET,value="getProjectStatusList",produces="text/html;charset=UTF-8") @ResponseBody public String getProjectStatusList(HttpServletRequest request, HttpServletResponse response){ Mapmap = new HashMap (); try{ String callback = request.getParameter("callback"); //System.out.println("token:"+request.getHeader("token")); List list = ss.getProjectStatusList(); map.put("status", "success"); map.put("data", list); ObjectMapper mapper = new ObjectMapper(); //這個(gè)拼接是重點(diǎn)。。。 String result = callback+"("+mapper.writeValueAsString(map)+")"; //String result = mapper.writeValueAsString(map); return result; }catch(Exception e){ JSONObject jo = new JSONObject(); jo.put("status", "fail"); jo.put("data", e.getMessage()); return jo.toString(); } }
然而這樣改動(dòng)對(duì)我來說簡(jiǎn)直是傷筋動(dòng)骨,因?yàn)槲矣刑嗟?b>URL映射,修改的成本太大。
所以機(jī)智的我想到了nginx,這家伙不就是拿來搞反向代理的嗎?真是機(jī)智如我
有了這個(gè)思路,做起來就簡(jiǎn)單了。直接在監(jiān)聽80端口的server中添加一個(gè)location:
location /myApp { proxy_pass http://localhost:8080/myApp; }
重新加載nginx:
{NGINX_HOME}/sbin/nginx -s reload
然后就把之前http://site:8080/myApp的跨域請(qǐng)求變成了http://site/myApp的非跨域請(qǐng)求。
好吧,都是我猜的,等前端同學(xué)來驗(yàn)證我的想法了
忘了更新了
下午實(shí)驗(yàn)課自己寫了個(gè)ajax請(qǐng)求試了下,這個(gè)思路是沒有問題的
$.ajax({url : "/myApp/list", async : true}).success( function (data) { console.log(data); });
打印結(jié)果:
Object {data: Array[8], success: true, errorMsg: null}
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/39305.html
摘要:三反向代理解決的原理將安裝在本地,然后將項(xiàng)目部署于下,這樣訪問本地項(xiàng)目時(shí)用本地項(xiàng)目即可訪問。這樣瀏覽器之間的請(qǐng)求完全滿足瀏覽器域名協(xié)議端口相同的同源策略,可在不改變后臺(tái)接口的情況下避免跨域問題。 一、問題背景說明: 編寫移動(dòng)前端頁(yè)面時(shí)需要訪問后臺(tái)系統(tǒng)接口。前端項(xiàng)目在本地(個(gè)人辦公電腦)開發(fā),后臺(tái)接口存放后生產(chǎn)的后臺(tái)服務(wù)器,本地的ajax請(qǐng)求無法直接訪問后臺(tái)接口,也就是遇到了跨域問題...
摘要:三反向代理解決的原理將安裝在本地,然后將項(xiàng)目部署于下,這樣訪問本地項(xiàng)目時(shí)用本地項(xiàng)目即可訪問。這樣瀏覽器之間的請(qǐng)求完全滿足瀏覽器域名協(xié)議端口相同的同源策略,可在不改變后臺(tái)接口的情況下避免跨域問題。 一、問題背景說明: 編寫移動(dòng)前端頁(yè)面時(shí)需要訪問后臺(tái)系統(tǒng)接口。前端項(xiàng)目在本地(個(gè)人辦公電腦)開發(fā),后臺(tái)接口存放后生產(chǎn)的后臺(tái)服務(wù)器,本地的ajax請(qǐng)求無法直接訪問后臺(tái)接口,也就是遇到了跨域問題...
閱讀 1653·2023-04-26 02:11
閱讀 2993·2023-04-25 16:18
閱讀 3723·2021-09-06 15:00
閱讀 2640·2019-08-30 15:55
閱讀 1944·2019-08-30 13:20
閱讀 2061·2019-08-26 18:36
閱讀 3136·2019-08-26 11:40
閱讀 2554·2019-08-26 10:11