이번에는 Nginx를 사용하여 ajax 도메인 간 요청을 방지하는 주의 사항과 Nginx를 사용하여 ajax 도메인 간 요청을 방지하는 방법을 알려드리겠습니다. 다음은 실제 사례입니다.
서버의 nginx + tomcat, nginx는 포트 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_HOME}/sbin/nginx -s reload
추천 자료:
Ajax에서 ReadyState 및 status를 사용하는 방법Ajax에서 get 및 post를 사용할 때 직면하게 되는 문제와 이를 처리하는 방법위 내용은 Ajax 도메인 간 요청을 방지하려면 Nginx를 사용하세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!