龙空技术网

若依开发框架解析笔记(8)-跨域的处理

小郭看上海 314

前言:

现在朋友们对“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对后台的请求