>웹 프론트엔드 >JS 튜토리얼 >Ajax 도메인 간 요청을 피하기 위해 Nginx 역방향 프록시를 사용하는 방법

Ajax 도메인 간 요청을 피하기 위해 Nginx 역방향 프록시를 사용하는 방법

亚连
亚连원래의
2018-05-23 17:14:022273검색

이 글에서는 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.