摘要:前后端分离的项目,使用请求一般都出现跨域的问题。跨域的时候所创建的是不会被浏览器保存下来的。所以每次进行跨域请求时,服务器都认为不是同一个浏览器所发起的请求,也会不一样。以下将介绍如何保证一致。
前后端分离的项目,使用Ajax请求一般都出现跨域的问题。
跨域的时候所创建的session是不会被浏览器保存下来的。所以每次进行跨域请求时,服务器都认为不是同一个浏览器所发起的请求,session也会不一样。以下将介绍如何保证session一致。
前端Ajax请求
$.ajax({ url:url, xhrFields: { withCredentials: true }, crossDomain: true, success:function() { }, error:function() { } });
后端构建一个拦截器,对需要跨域访问的request头部重写
如:
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { HttpServletResponse response= (HttpServletResponse) servletResponse; HttpServletRequest request=(HttpServletRequest)servletRequest; response.setHeader("Access-Control-Allow-Origin", "*"); response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE"); response.setHeader("Access-Control-Max-Age", "3600"); response.setHeader("Access-Control-Allow-Headers", "x-requested-with"); response.setHeader("Access-Control-Allow-Credentials", "true"); response.setHeader("XDomainRequestAllowed","1"); filterChain.doFilter(servletRequest,servletResponse); }
另外Spring boot的项目可以添加拦截配置,以下:
@Component @Order(Ordered.HIGHEST_PRECEDENCE) public class AuthCorsFilter extends CorsFilter { public AuthCorsFilter() { super(configurationSource()); } private static UrlBasedCorsConfigurationSource configurationSource() { CorsConfiguration config = new CorsConfiguration(); config.setAllowCredentials(true); config.addAllowedOrigin("*"); config.addAllowedHeader("*"); config.addAllowedMethod("*"); config.setAllowCredentials(true); UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); source.registerCorsConfiguration("/**", config); return source; } }
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/67944.html
摘要:这种情况通常发生在反向代理的时候,前端发起请求代理服务器,代理服务器发起请求到,这时候就容易导致域名不一致,请一定要注意这点。 写在最前 前后端分离其实有两类: 开发阶段使用dev-server,生产阶段是打包成静态文件整个放入后端项目中。 开发阶段使用dev-server,生产阶段是打包成静态文件放入单独的静态资源服务器中,如nginx。 这两种方案最大的区别就是生产阶段。由于第...
摘要:这种情况通常发生在反向代理的时候,前端发起请求代理服务器,代理服务器发起请求到,这时候就容易导致域名不一致,请一定要注意这点。 写在最前 前后端分离其实有两类: 开发阶段使用dev-server,生产阶段是打包成静态文件整个放入后端项目中。 开发阶段使用dev-server,生产阶段是打包成静态文件放入单独的静态资源服务器中,如nginx。 这两种方案最大的区别就是生产阶段。由于第...
摘要:这种情况通常发生在反向代理的时候,前端发起请求代理服务器,代理服务器发起请求到,这时候就容易导致域名不一致,请一定要注意这点。 写在最前 前后端分离其实有两类: 开发阶段使用dev-server,生产阶段是打包成静态文件整个放入后端项目中。 开发阶段使用dev-server,生产阶段是打包成静态文件放入单独的静态资源服务器中,如nginx。 这两种方案最大的区别就是生产阶段。由于第...
摘要:反向代理前后端联调跨域什么是跨域跨域,指的是浏览器不能执行其他网站的脚本。这时候,用反向代理实现跨域,是最简单的跨域方式。 keywords: Nginx反向代理 前后端联调 跨域 1.什么是跨域 跨域,指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对javascript施加的安全限制。 所谓同源是指,域名,协议,端口都相同。浏览器执行javascrip...
摘要:延伸这里再顺便提一下,新架构下的防御。不过,还有一点值得一提前后端分离框架下,路由由控制我自己要获取的后端参数和需要用在业务逻辑的参数,在主观上前端同学更好把握一些。 原文: http://feclub.cn/post/content... 背景 1、什么是CSRF攻击? 这里不再介绍CSRF,已经了解CSRF原理的同学可以直接跳到:3、前后端分离下有何不同?。 不太了解的同学可以看这...
阅读 954·2023-04-25 23:54
阅读 3035·2021-11-08 13:21
阅读 3758·2021-09-27 13:35
阅读 3380·2021-07-26 23:41
阅读 1042·2019-08-30 15:52
阅读 3431·2019-08-30 11:27
阅读 2087·2019-08-29 18:37
阅读 528·2019-08-29 17:24