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.类方法对应改变的响应头字段

      

  • 相关阅读:
    写了一个自动打包并发布到tomcat的脚本
    查看并更改mysql编码
    MyBatis无法根据中文条件查询出结果
    服务器端PHP多进程编程
    PHP-popen() 函数打开进程文件指针
    php并发处理
    PHP能得到你是从什么页面过来的,r…
    PHP如何解决网站大流量与高并发的…
    基于PHP的cURL快速入门
    Mysql内存表的用处
  • 原文地址:https://www.cnblogs.com/wrhbk/p/15152135.html
Copyright © 2011-2022 走看看