zoukankan      html  css  js  c++  java
  • spring boot--优雅解决跨域

    1、单个路由允许跨域

      @CrossOrigin:通过为路由设置CrossOrigin 允许单个路由进行跨域

       @CrossOrigin //此注解允许当前路由跨域请求
        @RequestMapping("/login")
        public Object login(@RequestParam String phone) throws Exception {
            return "登陆成功";
        }

      @CrossOrigin可以添加一些参数配置

     @CrossOrigin(value = "*",methods = {RequestMethod.POST}) //允许所有域名,并且只有post请求能够跨域访问
        @RequestMapping("/login")
        public Object login(@RequestParam String phone) throws Exception {
            return "登陆成功";
        }

      参数:

    1. value、origins属性:配置允许访问的源,如: http://anxminise.cc*表示允许全部的域名
    2. methods属性:配置跨域请求支持的方式,如:GET、POST,且一次性返回全部支持的方式
    3. maxAge属性:配置预检请求的有效时间, 单位是秒,表示:在多长时间内,不需要发出第二次预检请求
    4. allowCredentials属性:配置是否允许发送Cookie,用于 凭证请求, 默认不发送cookie
    5. allowedHeaders属性:配置允许的自定义请求头,用于 预检请求
    6. exposedHeaders属性:配置响应的头信息, 在其中可以设置其他的头信息,不进行配置时, 默认可以获取到Cache-Control、Content-Language、Content-Type、Expires、Last-Modified、Pragma字段

    2、全局路由允许跨域

      1. 通过WebMvcConfigurer类

    @Configuration
    public class CorsConfig {
        @Bean
        public WebMvcConfigurer corsConfigurer() {
            return new WebMvcConfigurer() {
                @Override
                public void addCorsMappings(CorsRegistry registry) {
                    registry.addMapping("/*")
                            .allowedOrigins("*")
                            //.allowCredentials(true) //这个是可以否携带凭证响应请求,默认值是false。凭证可以是Cookie ,授权标头或 TLS 客户端证书,一般都是cookie。值得一提的是:如果你将他设置为true,那么需满足这些要求才能正常访问
                            .allowedMethods("GET", "POST", "DELETE", "PUT", "PATCH")
                            .maxAge(3600);
                    WebMvcConfigurer.super.addCorsMappings(registry);
                }
            };
        }
    }

      2.通过WebMvcConfigurationSupport类

    @Configuration
    public class CorsConfig extends WebMvcConfigurationSupport {
        @Override
        protected void addCorsMappings(CorsRegistry registry) {
            registry.addMapping("/**")
    //                .allowCredentials(true) //这个是可以否携带凭证响应请求,默认值是false。凭证可以是Cookie ,授权标头或 TLS 客户端证书,一般都是cookie。
                    .allowedMethods("*")
                    .allowedOrigins("*")
                    .allowedHeaders("*");
            super.addCorsMappings(registry);
        }
    }

     3.类方法对应改变的响应头字段

      

  • 相关阅读:
    python读写excel等数据文件方法
    学习记录2
    NLP、ML/DL等基础概念
    修改代码的艺术-读后感
    Python读取文本文件数、excel文件数据
    学习记录1
    数据分析平台
    Pycharm搜索关键词的快捷键
    程序员的自我修养阅读笔记三
    第十周学习
  • 原文地址:https://www.cnblogs.com/wrhbk/p/15152135.html
Copyright © 2011-2022 走看看