In diesem Artikel werden hauptsächlich relevante Informationen zur Verwendung des Nginx-Reverse-Proxy zur Vermeidung domänenübergreifender Ajax-Anfragen vorgestellt. Er ist sehr gut und hat Referenzwert.
Nginx + Tomcat Der Server, auf dem Nginx auf Port 80 und Tomcat auf Port 8080 lauscht.
Da ich mit dem Front-End nicht vertraut bin, dachte ich, dass die Verwendung von Ajax die Notwendigkeit eines Rückrufs überflüssig machen würde. Meine Klassenkameraden am Front-End sagten jedoch, dass ein Rückruf nicht erforderlich sei, es sei denn, er sei domänenübergreifend und bat mich, es dem zurückgegebenen JSON hinzuzufügen. Aber ich habe gerade die grundlegendste Verwendung von spring-mvc gelernt und weiß nicht, wie man einen Rückruf hinzufügt
Ich habe online einen machbaren Code gefunden, der so aussieht:
@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(); } }
Allerdings Es ist nicht hilfreich, es so zu ändern. Es ist ein echtes Problem für mich, weil ich zu viele URL-Zuordnungen habe und die Kosten für die Änderung zu hoch sind.
Also war ich schlau und dachte an Nginx. Wird dieser Typ nicht nur als Reverse-Proxy verwendet? Es ist so schlau wie ich
Mit dieser Idee ist es ganz einfach. Fügen Sie direkt einen Standort auf dem Server hinzu, der Port 80 überwacht:
location /myApp { proxy_pass http://localhost:8080/myApp; }
Nginx neu laden:
{NGINX_HOME}/sbin/nginx -s reload
Dann setzen Sie das vorherige http://site:8080/myApp Das Kreuz -Domain-Anfrage wird zu einer nicht domänenübergreifenden Anfrage für http://site/myApp.
Ich habe das Obige für Sie zusammengestellt und hoffe, dass es Ihnen in Zukunft hilfreich sein wird.
Verwandte Artikel:
Eingehende Analyse der Nginx-Implementierung von AJAX-Cross-Domain-Request-Problemen
Ajax-Klicks laden die Daten kontinuierlich Liste (grafisches Tutorial)
Ajax+Struts2 implementiert die Verifizierungscode-Verifizierungsfunktion (grafisches Tutorial)
Das obige ist der detaillierte Inhalt vonSo verwenden Sie den Nginx-Reverse-Proxy, um domänenübergreifende Ajax-Anfragen zu vermeiden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!