推广app网站,拟定网站优化方案,wordpress美食主题,a5创业网站建设目录 1.使用拦截器解决跨域的示例#xff1a;
2.使用redis#xff0c;不使用session 前后端不分离项目我们可以通过session存储数据#xff0c;但是前后端分离时不存在会话#xff0c;每次请求sessionid都会改变#xff0c;当值我们储存的数据不能取出来。
1.使用拦截器…目录 1.使用拦截器解决跨域的示例
2.使用redis不使用session 前后端不分离项目我们可以通过session存储数据但是前后端分离时不存在会话每次请求sessionid都会改变当值我们储存的数据不能取出来。
1.使用拦截器解决跨域的示例
前端代码
fetch(http://localhost:8080/api/user, {method: GET,headers: {Content-Type: application/json;charsetUTF-8}
})
.then(response response.json())
.then(data console.log(data))
.catch(error console.error(error))在上面的代码中我们使用fetch函数向后端发送了一个GET请求并设置了请求头中的Content-Type为application/json;charsetUTF-8。
后端代码
首先我们需要定义一个拦截器在请求处理之前进行跨域处理
public class CorsInterceptor implements HandlerInterceptor {Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {response.setHeader(Access-Control-Allow-Origin, *);response.setHeader(Access-Control-Allow-Methods, *);response.setHeader(Access-Control-Max-Age, 3600);response.setHeader(Access-Control-Allow-Headers, *);response.setHeader(Access-Control-Allow-Credentials, true);return true;}}在上面的拦截器中我们设置了
Access-Control-Allow-Origin、
Access-Control-Allow-Methods、
Access-Control-Max-Age、
Access-Control-Allow-Headers、
Access-Control-Allow-Credentials等跨域请求头。
然后在我们的配置类中注册拦截器
Configuration
public class CorsConfiguration implements WebMvcConfigurer {Beanpublic CorsInterceptor corsInterceptor() {return new CorsInterceptor();}Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(corsInterceptor());}}
在上面的配置类中我们创建了一个CorsInterceptor对象并将其注册到InterceptorRegistry中从而实现了使用拦截器解决跨域问题。
通过拦截器我们可以在请求处理之前进行跨域处理从而避免前后端分离中sessionid不同的问题。
2.使用redis不使用session
把要存储到session的数据通过redis储存思路一致
优点
而Redis可以代替session是因为它具有快速、可靠的内存数据库特性并且支持分布式存储能够处理高并发的请求。在使用Redis代替session时我们可以将session存储在Redis中可以通过Redis提供的get和set方法来获取和设置session从而实现前后端分离的状态管理。
使用Redis代替session的优点包括 可以避免session共享带来的问题如session劫持等安全问题。 可以提高系统的性能和可扩展性因为Redis可以处理大量的请求并且支持分布式存储。 可以提高系统的可靠性因为Redis具有高可靠性和容错性即使某个节点出现故障也不会对整个系统造成影响。
总之通过使用Redis代替session可以在前后端分离的开发模式下实现更加高效、可靠和安全的状态管理。