面试中被问到前后端分离的框架中,如何解决跨域问题
1、什么是跨域?
首先谈一下为什么会跨域,前端为了防止盗用网络资源,引入了同源的概念,我们做开发的都知道,我们启动一个后台的程序都需要一个ip和端口号,一个ip和端口号就可以提供服务了。
所以简单的理解:如果ip不同,肯定就跨域了,如果ip相同,端口不同,那也是跨域的行为。
2、如何解决?
这里我们不罗列所有方法,说常用的即可,面试要掌握技巧,面试不是背博客,深入理解,小伙伴们自己还得去试一试
1、使用jsonp解决网站跨域 (不用多说,js本身可以跨域,带回请求)
2、使用设置响应头允许跨域
public Map<String, Object> ajaxB(HttpServletResponse response) {
response.setHeader("Access-Control-Allow-Origin", "*");
Map<String, Object> result = new HashMap<String, Object>();
result.put("errorCode", "200");
result.put("errorMsg", "登陆成功");
return result;
}
3、使用nginx做反向代理(这个是目前使用比较多的方式,一定要讲出来)
请求不同的项目,可以以路径的方式进行区分,请求到nginx后进行拦截,转发到不同的ip和端口的服务上去
server {
listen 80;
server_name www.***.com;
###A项目
location /a {
proxy_pass http://a.****.com:8080/;
index index.html index.htm;
}
###B项目
location /b {
proxy_pass http://b.*****.com:8081/;
index index.html index.htm;
}
}