Home  >  Article  >  Web Front-end  >  How to use Nginx reverse proxy to avoid ajax cross-domain requests

How to use Nginx reverse proxy to avoid ajax cross-domain requests

亚连
亚连Original
2018-05-23 17:14:022202browse

This article mainly introduces relevant information on how to use Nginx reverse proxy to avoid ajax cross-domain requests. It is very good and has reference value. Friends in need can refer to

nginx tomcat on the server. Among them, nginx listens to port 80, and tomcat listens to port 8080.

Because I am not familiar with the front-end, I thought that using ajax would eliminate the need for callback. However, the front-end classmates said that callback is not needed unless it is cross-domain, and asked me to add it to the returned json. But I just learned the most basic usage of spring-mvc, and I don’t know how to add callback

I found some feasible code online, which looks like this:

@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();
}
}

However, this change is not helpful It's a real hassle for me because I have too many URL mappings and the cost of modification is too high.

So I was smart and thought of nginx. Isn’t this guy just used for reverse proxy? It’s so clever as me

With this idea, it’s easy to do it. Directly add a location to the server listening on port 80:

location /myApp {
proxy_pass http://localhost:8080/myApp;
}

Reload nginx:

{NGINX_HOME}/sbin/nginx -s reload

Then put the previous http://site:8080/myApp The cross-domain request becomes a non-cross-domain request for http://site/myApp.

The above is what I compiled for everyone. I hope it will be helpful to everyone in the future.

Related articles:

In-depth analysis of Nginx implementation of AJAX cross-domain request issues

Ajax click continuously loads the data list (graphic tutorial )

Ajax Struts2 implements verification code verification function (graphic tutorial)

The above is the detailed content of How to use Nginx reverse proxy to avoid ajax cross-domain requests. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn