首页 > 其他分享 >Spring Boot项目设置跨域

Spring Boot项目设置跨域

时间:2023-02-15 17:12:50浏览次数:29  
标签:跨域 Spring Boot public httpResponse import servlet javax

一、跨域设置

新建一个配置类



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,public,httpResponse,import,servlet,javax
From: https://www.cnblogs.com/robots2/p/17123815.html

相关文章

  • SpringBoot-----quickstart
    一、最简SpringBoot程序所包含的基础文件:pom.xml和Application类。spring官网同样可以快速构建springboot工程。 二、SpringBoot项目快速启动1、在lifecycle中双击pac......
  • SpringBoot文件上传丢失Bug记录
    SpringBoot文件上传丢失Bug记录报错如下:java.io.FileNotFoundException:C:\Users\zbz12\AppData\Local\Temp\tomcat.708075972435741143.8080\work\Tomcat\localhost\c......
  • spring boot中自定义数据源属性注入
    在配置文件中写入如下配置,注释用户名密码,使用代码注入自定义config类,覆盖默认的hikari配置,其中数据库的用户名密码可以自定义,可以从第三方配置中心拿去......
  • Spring
    第一章初识Spring1.1Spring简介Spring是一个为简化企业级开发而生的开源框架。Spring是一个IOC(DI)和AOP容器框架。IOC全称:InversionofControl【控制反转】......
  • django解决跨域请求
    安装django-cors-headerspython-mpipinstalldjango-cors-headers在#setting.py下添加如下代码INSTALLED_APPS=[...,"corsheaders",...,]MIDDL......
  • 【Spring IOC】【二】容器源码解析- 获取单例 Bean
    1 前言在本篇文章中,我们将会详细分析BeanFactory的getBean(String)方法实现细节及所调用的方法。2 源码分析首先我们先通读一下doGetBean方法,了解里边重点的几个步......
  • jeeboot框架学习
    1.准备软件1.1ideal及其激活工具(激活免费至2099年);1.2jdk1.8以上;1.3mysql数据库;1.4navicat破解版;1.5node16.9版本(高版本可能有问题);1.......
  • 自定义跨域中间件
    fromdjango.utils.deprecationimportMiddlewareMixin​​classCorsMiddleware(MiddlewareMixin):  """屏蔽CORS跨域"""​  defprocess_response(self,reques......
  • springboot在test的时候,new的类报空指针
    ok@ComponentpublicclassFifthGithubCrawler{@AutowiredprivateKBComponentVersionRepositoryversionRepository;/***导出所有数据到json......
  • SpringBoot 参数及性能优化
    SpringBoot性能优化 组件自动扫描带来的问题默认情况下,我们会使用@SpringBootApplication注解来自动获取应用的配置信息,但这样也会给应用带来一些副作用。使用这个注解后......