学习问题记录

发布于:2023-09-22 ⋅ 阅读:(202) ⋅ 点赞:(0)
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;

网站公告

今日签到

点亮在社区的每一天
去签到