前言:
现在朋友们对“js对后台的请求”可能比较珍视,看官们都需要学习一些“js对后台的请求”的相关文章。那么小编在网络上收集了一些对于“js对后台的请求””的相关知识,希望同学们能喜欢,大家快快来学习一下吧!本篇笔记比较简单,主要介绍一下若依框架是如何处理跨域的。
首先简单介绍一下跨域这个概念。跨域是浏览器中的一种安全措施。浏览器会对网页中的js脚本中发起的请求进行检测,如果发起的请求和当前协议,端口,地址不同的话会进行限制,目的还是为了保证安全性。
前后端分离的框架中,前端服务器和后端服务器一般都是独立部署,一起部署的话至少也是不同端口,如果js中直接朝后台发起请求,那势必会造成跨域。
首先看一下后端代码中的配置:
在配置类ResourcesConfig中定义了一个corsFilter来和配合SpringSecurity使用,里面有很多关于跨域上面的配置,作者原始的配置没有对请求头和请求方法做任何的限制,不会对任何请求有跨域上的限制。
@Bean public CorsFilter corsFilter() { CorsConfiguration config = new CorsConfiguration(); config.setAllowCredentials(true); // 设置访问源地址 config.addAllowedOriginPattern("*"); // 设置访问源请求头 config.addAllowedHeader("*"); // 设置访问源请求方法 config.addAllowedMethod("*"); // 有效期 1800秒 config.setMaxAge(1800L); // 添加映射路径,拦截一切请求 UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); source.registerCorsConfiguration("/**", config); // 返回新的CorsFilter return new CorsFilter(source); }
如果修改一下配置例如:config.addAllowedMethod("get"),这样子post请求的跨域请求就不被允许。这样的写法比用注解加在每个Restcontroller上面要来的方便,维护起来也更加容易。
其实在本地的开发环境中,前端项目里面配置了代理,类似与nginx一样,通过代理来转发请求,从而保持了协议,地址和端口的一致性,从而避免了跨域。
devServer: { host: '0.0.0.0', port: port, open: true, proxy: { // detail: [process.env.VUE_APP_BASE_API]: { target: ``, changeOrigin: true, pathRewrite: { ['^' + process.env.VUE_APP_BASE_API]: '' } } },
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #js对后台的请求