1.jar包冲突问题
jar包后面出现 !,表示jar包冲突,需要修改jar包版本
2.get请求方式乱码问题
配置tomcat server.xml 文件 URIEncoding = “utf-8”
如果是tomcat插件,配置 utf-8
3.跨域问题
这里是前后端分离项目中的跨域问题
1.什么是跨域问题
跨域访问,必须先了解一个名词:同源策略
同源策略是指在浏览器端出于安全考量,向服务端发起请求必须满足:协议相同、Host(ip/域名)相同、端口相同的条件,否则访问将被禁止,不满足要求的访问也就被称为跨域访问。
虽然跨域访问被禁止之后,可以在一定程度上提高了应用的安全性,但也为开发带来了一定的麻烦
跨域问题报错截图:
2.解决办法
1.JSONP
该方法只支持Get请求,不建议使用
2.CORS
配置拦截器或者过滤器:
@WebFilter("/*")
public class CorsFilter implements Filter {
@Override
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
HttpServletRequest request=(HttpServletRequest)req;
HttpServletResponse response=(HttpServletResponse)resp;
response.setHeader("Access-Control-Allow-Origin","http://localhost:5500");
response.setHeader("Access-Control-Allow-Methods", "GET,POST,PUT,DELETE");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Credentials", "true");
chain.doFilter(request, response);
}
}
注意:这里配置"http://localhost:5500",前端不可用"http://127.0.0.1:5500",会有问题
3.反向代理(Nginex)
通过Nginex做转发
。。。
4.Session共享问题
这里是前后端分离项目中由于跨域导致Session共享问题(前端是Vue+axios)
1.问题描述
客户端第一次请求服务器,服务器都会给其分配一个Session通过cookie发送给客户端,此后客户端每次请求都会在请求头携带含有Session信息的cookie,后端会通过此方法便是不同的客户端。
而在需要跨域的前后端分离的项目中,客户端发送请求时无法携带cookie,也就无法携带Sessoin信息,所以当客户端发送第二次请求时,服务器会以为是新的客户端发来请求,会分配新的Session,两个不同的浏览器(即客户端)是无法实现Session共享。
举例:权限控制项目中,每次请求服务器都需要通过Session获取用户权限信息来控制权限,首次登录时服务端会将用户信息放入Session域中的,第二次请求时,由于重新分配Session,属于不同的Session域,就无法获取登录时存储的用户信息。
2.问题解决
因为是通过axois发送请求,所以只需在发送请求前配置以下信息,允许携带Cookie即可
axios.defaults.withCredentials=true;