zoukankan      html  css  js  c++  java
  • Spring Boot Web应用开发 CORS 跨域请求支持:

    Spring Boot Web应用开发 CORS 跨域请求支持:

    一、Web开发经常会遇到跨域问题,解决方案有:jsonp,iframe,CORS等等
    CORS与JSONP相比

    1、 JSONP只能实现GET请求,而CORS支持所有类型的HTTP请求。
    2、 使用CORS,开发者可以使用普通的XMLHttpRequest发起请求和获得数据,比起JSONP有更好的错误处理。
    3、 JSONP主要被老的浏览器支持,它们往往不支持CORS,而绝大多数现代浏览器都已经支持了CORS
    浏览器支持情况

    Chrome 3+
    Firefox 3.5+
    Opera 12+
    Safari 4+
    Internet Explorer 8+
    二、在spring MVC 中可以配置全局的规则,也可以使用@CrossOrigin注解进行细粒度的配置。

    全局配置:
    @Configuration
    public class CustomCorsConfiguration {

    @Bean
    public WebMvcConfigurer corsConfigurer() {
    return new WebMvcConfigurerAdapter() {
    @Override
    public void ad 
    };
    }
    }

    或者是

    /**
    * 全局设置
    *
    * @author wujing
    */
    @Configuration
    public class CustomCorsConfiguration2 extends WebMvcConfigurerAdapter {

    @Override
    public void addCorsMappings(CorsRegistry registry) {
    registry.addMapping("/api/**").allowedOrigins("http://localhost:8080");
    }
    }
    定义方法:


    /**
    * @author wujing
    */
    @RestController
    @RequestMapping("/api")
    public class ApiController {

    @RequestMapping(value = "/get")
    public HashMap<String, Object> get(@RequestParam String name) {
    HashMap<String, Object> map = new HashMap<String, Object>();
    map.put("title", "hello world");
    map.put("name", name);
    return map;
    }
    }

    测试js:

    $.ajax({
    url: "http://localhost:8081/api/get",
    type: "POST",
    data: {
    name: "测试"
    },
    success: function(data, status, xhr) {
    console.log(data);
    alert(data.name);
    }
    });

    细粒度配置:


    /**
    * @author wujing
    */
    @RestController
    @RequestMapping(value = "/api", method = RequestMethod.POST)
    public class ApiController {

    @CrossOrigin(origins = "http://localhost:8080")
    @RequestMapping(value = "/get")
    public HashMap<String, Object> get(@RequestParam String name) {
    HashMap<String, Object> map = new HashMap<String, Object>();
    map.put("title", "hello world");
    map.put("name", name);
    return map;
    }
    }


    案例

    package com.toutiao.agent.apiimpl.conf;

    import org.springframework.boot.web.servlet.FilterRegistrationBean;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.cors.CorsConfiguration;
    import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
    import org.springframework.web.filter.CorsFilter;

    /**
    *
    */
    @Configuration
    public class CorsConfig {
    // @Override
    // public void addCorsMappings(CorsRegistry registry) {
    //
    // registry.addMapping("/**").allowedHeaders("*")
    // .allowedMethods("*")
    // .allowedOrigins("*");
    //
    // }
    // @Bean
    // public WebMvcConfigurer corsConfigurer() {
    // return new WebMvcConfigurerAdapter() {
    // @Override
    // public void addCorsMappings(CorsRegistry registry) {
    // registry.addMapping("/**");
    // }
    // };
    // }

    @Bean
    public FilterRegistrationBean corsFilter() {
    UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
    CorsConfiguration config = new CorsConfiguration();
    config.setAllowCredentials(true);
    config.addAllowedOrigin("*");
    config.addAllowedHeader("*");
    config.addAllowedMethod("*");
    source.registerCorsConfiguration("/**", config);
    FilterRegistrationBean bean = new FilterRegistrationBean(new CorsFilter(source));
    bean.setOrder(0);
    return bean;
    }
    }

    有道词典
    dCorsMappings(C ...
    详细X
      dCorsMappings(CorsRegistry注册表){   registry.addMapping(“/ api / * *”).allowedOrigins(http://localhost:8080);   }
    人这辈子没法做太多事情,所以每做一件事都要做到精彩绝伦。 因为,这就是我的宿命。人生苦短,你明白吗? 所以这是我为人生做出的选择
  • 相关阅读:
    07. pt-fifo-split
    05. pt-diskstats
    06. pt-duplicate-key-checker
    坑爹的tp-link管理密码设置
    windows核心编程 第5章job lab示例程序 解决小技巧
    FormatMessage将错误代码转换成对应的字符串
    调试 内存查看StringCchCopy的运行前后
    对硬盘扇区的操作,练手代码
    关不掉的窗口
    读取unicode日志文件并清除记录的垃圾文件
  • 原文地址:https://www.cnblogs.com/junjun1578/p/10437983.html
Copyright © 2011-2022 走看看