一、跨域设置

新建一个配置类



import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import org.apache.commons.lang3.StringUtils; /**
* @author wangshida
* @datetime 2023-02-15 上午11:20
* @desc 跨域
* @menu
*/
public class CorsFilter implements Filter { @Override
public void init(FilterConfig filterConfig) throws ServletException {
} @Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletResponse httpResponse = (HttpServletResponse) response;
HttpServletRequest httpRequest = (HttpServletRequest) request;
String originHeader = httpRequest.getHeader("Origin");
//允许某个域名发起跨域请求
httpResponse.addHeader("Access-Control-Allow-Origin", StringUtils.isEmpty(originHeader)?"*":originHeader);
//设置允许Cookie
httpResponse.addHeader("Access-Control-Allow-Credentials", "true");
//设置允许跨域请求的方法
httpResponse.addHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
//允许跨域请求包含content-type
httpResponse.addHeader("Access-Control-Allow-Headers", "Origin,X-Requested-With,Content-Type,Accept,X-Token");
//表示可以缓存时长,单位秒,表示隔30分钟才发起预检请求
httpResponse.addHeader("Access-Control-Max-Age", "3600");
//跨域的预检请求直接返回
if ("OPTIONS".equals(httpRequest.getMethod())) {
response.getWriter().println("ok");
return;
}
chain.doFilter(request, response);
} @Override
public void destroy() {
}
}

新增FilterConfig


import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; /**
* @author wangshida
* @datetime 2023-02-15 上午11:20
* @desc
* @menu
*/
@Configuration
public class FilterConfig {
/**
* 跨域设置
*/
@Bean
public FilterRegistrationBean corsFilter() {
FilterRegistrationBean registration = new FilterRegistrationBean();
registration.setFilter(new CorsFilter());
registration.addUrlPatterns("/*");
return registration;
}
}

Spring Boot项目设置跨域的更多相关文章

  1. spring boot项目配置跨域

    1.在项目启动入口类实现 WebMvcConfigurer 接口: @SpringBootApplication public class Application implements WebMvcC ...

  2. Spring Boot 中处理跨域

    HTML 5中新增的跨域资源访问(Cross-Origin Resource Sharing)特性可以让我们在开发后端系统的时候决定资源是否允许被跨域访问.所谓跨域指的是域名不同或者端口不同或者协议不 ...

  3. 【Spring Boot】Spring Boot项目设置多个配置文件,并在生产环境中的Tomcat设置对应的配置文件

    1.修改Spring Boot项目配置文件 除了主配置文件,另外创建2个配置文件,注意命名要用application-*.properties 主配置文件中写入,使用dev作为开发配置 spring. ...

  4. spring boot:解决cors跨域问题的两种方法(spring boot 2.3.2)

    一,什么是CORS? 1,CORS(跨域资源共享)(CORS,Cross-origin resource sharing), 它是一个 W3C 标准中浏览器技术的规范, 它允许浏览器向非同一个域的服务 ...

  5. Java Spring boot 2.0 跨域问题

    跨域 一个资源会发起一个跨域HTTP请求(Cross-site HTTP request), 当它请求的一个资源是从一个与它本身提供的第一个资源的不同的域名时 . 比如说,域名A(http://dom ...

  6. spring boot之配置跨域

    在启动类中配置 @Bean public WebMvcConfigurer corsConfigurer() { return new WebMvcConfigurer() { @Override p ...

  7. 在Linux上从零开始部署前后端分离的Vue+Spring boot项目

    最近做了一个前后端分离的商城项目来熟悉开发的整个流程,最后希望能有个正式的部署流程,于是试着把项目放在云服务器上,做了一下发现遇到了不少问题,借此记录一下整个部署的过程. 使用的技术栈如标题所说大体上 ...

  8. 后端开发实践——Spring Boot项目模板

    在我的工作中,我从零开始搭建了不少软件项目,其中包含了基础代码框架和持续集成基础设施等,这些内容在敏捷开发中通常被称为"第0个迭代"要做的事情.但是,当项目运行了一段时间之后再来反 ...

  9. Spring Boot 项目学习 (三) Spring Boot + Redis 搭建

    0 引言 本文主要介绍 Spring Boot 中 Redis 的配置和基本使用. 1 配置 Redis 1. 修改pom.xml,添加Redis依赖 <!-- Spring Boot Redi ...

  10. Spring Boot项目使用Swagger2文档教程

    [本文版权归微信公众号"代码艺术"(ID:onblog)所有,若是转载请务必保留本段原创声明,违者必究.若是文章有不足之处,欢迎关注微信公众号私信与我进行交流!] 前言 Sprin ...

随机推荐

  1. Redis迁移工具之Redis-shake

    Redis-shake is a tool for synchronizing data between two redis databases. Redis-shake是一个用于在两个redis之间 ...

  2. java 去重元素,元素是一组没有顺序的字符

    1.需求描述: 有一个大集合,大集合中的元素是是一个小集合,要求在大集合中的小集合不能重复,小集合中的元素没有顺序. 例如有个大集合 [[a,b],[b,c]] 向这个元素中添加元素[b,a]就是添加 ...

  3. Java根据前端返回的字段名进行查询数据

    在Java后端开发中,我们经常需要根据前端传递的参数(如字段名)来动态查询数据库中的数据.这种需求通常出现在需要实现通用查询功能或者复杂查询接口的场景中.为了实现这个功能,我们需要结合Java的反射机 ...

  4. 物联网cc2530按键长按短按分别控制亮灯亮灭(详细版)

    ​ 一.在编辑程序之前搭建其基本框架,如下所示 #include <iocc2530.h> void main(void) { halBoardInit(); while(1) { } } ...

  5. 关于 Span 的一切:探索新的 .NET 明星: 1 Span<T> 是什么?

    关于 Span 的一切:探索新的 .NET 明星 https://docs.microsoft.com/en-us/archive/msdn-magazine/2018/january/csharp- ...

  6. 对比 ASP.NET Core 中的 HttpContext.Features 与 HttpContext.Items

    对比 ASP.NET Core 中的 HttpContext.Features 与 HttpContext.Items https://newbedev.com/httpcontext-feature ...

  7. HttpClientManager

    HttpClientManger package com.gateway.http.client; import com.fasterxml.jackson.core.type.TypeReferen ...

  8. Qt编写可视化大屏电子看板系统19-横向柱状图

    一.前言 横向柱状图的绘制这玩意当初还着实花费了一些时间,因为从v1版本开始,默认XY坐标轴是没有交换位置的处理的,也只有垂直的柱状图,要想换成横向的柱状图必须是自己拿到数据重新绘制,数据值的设置一般 ...

  9. Qt编写地图综合应用2-迁徙图

    一.前言 在很多web系统中,尤其是大屏系统中,经常可以看到类似于飞机迁徙图的效果,这个在echart中也是最常用的一个效果,迁徙图既可以是一个飞机也可以是其他形状,然后有一条动态的移动轨迹来表示流向 ...

  10. Windows 配置多版本JDK

    @ 目录 前言 简介 一.下载并安装多个JDK版本 二.配置环境变量 2.1 点击高级系统设置 2.2 选择环境变量 2.3 配置CLASSPATH 2.4 配置JAVA_HOME 2.5 配置Pat ...