이 글에서는 Ajax 크로스 도메인 요청을 피하기 위해 Nginx 리버스 프록시를 사용하는 방법에 대한 관련 정보를 주로 소개합니다. 매우 훌륭하고 참고할 만한 가치가 있습니다. 필요한 친구가 참고할 수 있습니다.
nginx가 수신하는 서버의 nginx + tomcat 포트 80으로 Tomcat은 포트 8080을 수신합니다.
저는 프론트엔드에 익숙하지 않아서 ajax를 사용하면 콜백이 필요 없을 줄 알았는데, 프론트엔드에 있는 동기들이 크로스 도메인이 아니면 콜백은 필요없다고 하더군요. 반환된 json에 추가하세요. 하지만 방금 spring-mvc의 가장 기본적인 사용법을 배웠고 콜백을 추가하는 방법을 모르겠습니다. 온라인에서 다음과 같은 몇 가지 실행 가능한 코드를 찾았습니다.
@RequestMapping(method=RequestMethod.GET,value="getProjectStatusList",produces="text/html;charset=UTF-8") @ResponseBody public String getProjectStatusList(HttpServletRequest request, HttpServletResponse response){ Map<String,Object> map = new HashMap<String,Object>(); try{ String callback = request.getParameter("callback"); //System.out.println("token:"+request.getHeader("token")); List<String> list = ss.getProjectStatusList(); map.put("status", "success"); map.put("data", list); ObjectMapper mapper = new ObjectMapper(); //这个拼接是重点。。。 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(); } }
그러나 이러한 변경은 나에게 단순히 긴장감을 줍니다. .Bone, URL 매핑이 너무 많고 수정 비용이 너무 높기 때문입니다.
그래서 영리하게도 nginx를 생각해 냈는데 이 녀석은 그냥 리버스 프록시용으로 쓰는 것 아닌가요? 당신은 정말 나만큼 똑똑해요
이 아이디어만 있으면 쉽게 할 수 있어요. 포트 80에서 수신 대기하는 서버에 위치를 직접 추가합니다:
location /myApp { proxy_pass http://localhost:8080/myApp; }nginx 다시 로드:
{NGINX_HOME}/sbin/nginx -s reload
그런 다음 이전 교차 도메인 요청을 http://site:8080/myApp에서 http://site/ Non-로 변경합니다. myApp에 대한 교차 출처 요청.
위 내용은 모두를 위해 제가 정리한 내용입니다. 앞으로 모든 사람에게 도움이 되기를 바랍니다.
관련 기사:
AJAX 교차 도메인 요청 문제의 Nginx 구현에 대한 심층 분석 Ajax는 데이터 목록을 지속적으로 로드하기 위해 클릭합니다(그래픽 튜토리얼) Ajax+Struts2는 확인 코드 확인 기능을 구현합니다. (그래픽 튜토리얼)위 내용은 Ajax 도메인 간 요청을 피하기 위해 Nginx 역방향 프록시를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!