全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

浅谈spring-boot 允许接口跨域并实现拦截(CORS)

本文介绍了spring-boot 允许接口跨域并实现拦截(CORS),分享给大家,也给自己留个笔记

pom.xml(依赖的jar)

// 在spring-boot-starter-web的启动器中,已经依赖好了
<dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
</dependency>

CORS跨域的配置(主要配置允许什么样的方法跨域)

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;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import java.util.ArrayList;
import java.util.List;
/**
 * Created by Msater Zg on 2017/4/3.
 */
@Configuration
public class CorsConfig extends WebMvcConfigurerAdapter {
  @Override
  public void addCorsMappings(CorsRegistry registry) {
    registry.addMapping("/**")
        .allowedOrigins("*")
        .allowCredentials(true)
        .allowedMethods("GET", "POST", "DELETE", "PUT")
        .maxAge(3600);
  }
  private CorsConfiguration buildConfig() {
    CorsConfiguration corsConfiguration = new CorsConfiguration();
    List<String> list = new ArrayList<>();
    list.add("*");
    corsConfiguration.setAllowedOrigins(list);
    /*
    // 请求常用的三种配置,*代表允许所有,当时你也可以自定义属性(比如header只能带什么,只能是post方式等等)
    */
    corsConfiguration.addAllowedOrigin("*"); 
    corsConfiguration.addAllowedHeader("*"); 
    corsConfiguration.addAllowedMethod("*"); 
    return corsConfiguration;
  }
  @Bean
  public CorsFilter corsFilter() {
    UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
    source.registerCorsConfiguration("/**", buildConfig());
    return new CorsFilter(source);
  }
}

拦截器配置(可以根据不同路径,配置不同的拦截器)

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
 * Created by Msater Zg on 2017/4/5.
 * 拦截器
 */
public class ApiInterceptor implements HandlerInterceptor {
  @Override
  public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
    // 请求前调用
    System.out.println("拦截了");
    return true;
  }
  @Override
  public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
    // 请求过程中调用
    System.out.println("拦截了");
  }
  @Override
  public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
    // 请求完成时调用
    System.out.println("拦截了");
  }
}

拦截器管理类,用于生成项目的拦截器链

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
/**
 * Created by Msater Zg on 2017/4/5.
 * 拦截器管理工具
 */
@Configuration
public class MyWebAppConfigurer extends WebMvcConfigurerAdapter {
  @Override
  public void addInterceptors(InterceptorRegistry registry) {
    // 多个拦截器组成一个拦截器链
    // addPathPatterns 用于添加拦截规则
    // excludePathPatterns 用户排除拦截
    registry.addInterceptor(new ApiInterceptor()).addPathPatterns("/user/**"); //对来自/user/** 这个链接来的请求进行拦截
    super.addInterceptors(registry);
  }
}

结语

实现跨域的方式有很多,这只是其中一种。有什么不对的地方希望能及时指出。谢谢!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# spring  # boot  # cors跨域拦截  # springboot  # 跨域  # 接口跨域  # Apache中配置支持CORS(跨域资源共享)实例  # JS跨域解决方案之使用CORS实现跨域  # js实现跨域的几种方法汇总(图片ping、JSONP和CORS)  # Node.js设置CORS跨域请求中多域名白名单的方法  # vue+springboot实现项目的CORS跨域请求  # 浅谈Koa2框架利用CORS完成跨域ajax请求  # 跨域解决之JSONP和CORS的详细介绍  # C# WebApi CORS跨域问题解决方案  # react中fetch之cors跨域请求的实现方法  # 跨域(CORS)问题的解决方案分享  # 拦截器  # 有什么  # 好了  # 多个  # 有很多  # 希望能  # 给大家  # 三种  # 这只  # 自定义  # 能带  # 可以根据  # 也给  # 你也可以  # 大家多多  # 留个  # 管理类  # 过程中  # 器中  # util 


相关文章: 电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?  如何获取PHP WAP自助建站系统源码?    Python lxml的etree和ElementTree有什么区别  制作网站的过程怎么写,用凡科建站如何制作自己的网站?  沈阳个人网站制作公司,哪个网站能考到沈阳事业编招聘的信息?  如何在Golang中引入测试模块_Golang测试包导入与使用实践  武汉网站如何制作,黄黄高铁武穴北站途经哪些村庄?  公众号网站制作网页,微信公众号怎么制作?  如何在IIS服务器上快速部署高效网站?  建站中国官网:模板定制+SEO优化+建站流程一站式指南  定制建站哪家更专业可靠?推荐榜单揭晓  C++中的Pimpl idiom是什么,有什么好处?(隐藏实现)  郑州企业网站制作公司,郑州招聘网站有哪些?  如何在万网ECS上快速搭建专属网站?  网站制作软件有哪些,制图软件有哪些?  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?  如何选择香港主机高效搭建外贸独立站?  如何在Golang中使用encoding/gob序列化对象_存储和传输数据  家庭服务器如何搭建个人网站?  如何解决ASP生成WAP建站中文乱码问题?  赚钱网站制作软件,建一个网站怎样才能赚钱?是如何盈利的?  如何破解联通资金短缺导致的基站建设难题?  如何快速搭建高效WAP手机网站吸引移动用户?  如何在IIS中配置站点IP、端口及主机头?  建站之星如何优化SEO以实现高效排名?  香港服务器租用费用高吗?如何避免常见误区?  专业制作网站的公司哪家好,建立一个公司网站的费用.有哪些部分,分别要多少钱?  个人网站制作流程图片大全,个人网站如何注销?  北京制作网站的公司,北京铁路集团官方网站?  ,网站推广常用方法?  IOS倒计时设置UIButton标题title的抖动问题  如何使用Golang table-driven基准测试_多组数据测量函数效率  建站主机是什么?如何选择适合的建站主机?  武汉外贸网站制作公司,现在武汉外贸前景怎么样啊?  C++用Dijkstra(迪杰斯特拉)算法求最短路径  广州网站建站公司选择指南:建站流程与SEO优化关键词解析  大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?  小米网站链接制作教程,请问miui新增网页链接调用服务有什么用啊?  油猴 教程,油猴搜脚本为什么会网页无法显示?  独立制作一个网站多少钱,建立网站需要花多少钱?  如何在Windows 2008云服务器安全搭建网站?  湖州网站制作公司有哪些,浙江中蓝新能源公司官网?  Swift中switch语句区间和元组模式匹配  c# 服务器GC和工作站GC的区别和设置  建站之星安装步骤有哪些常见问题?  官网自助建站系统:SEO优化+多语言支持,快速搭建专业网站  大连网站设计制作招聘信息,大连投诉网站有哪些?  较简单的网站制作软件有哪些,手机版网页制作用什么软件?  ,南京靠谱的征婚网站? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。