Java工具类- 跨域工具类

原本Spring MVC项目添加跨域:

在web.xml文件中配置:

      <!-- cors解决跨域访问问题 -->
    <filter>
        <filter-name>cors</filter-name>
        <filter-class>com.wazn.learn.util.SimpleCORSFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>cors</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

工具类代码:

package com.wazn.learn.util;

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.annotation.WebFilter;
import javax.servlet.http.HttpServletResponse;

public class SimpleCORSFilter implements Filter {

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("SimpleCORSFilter启动!!!===========");
    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {
        HttpServletResponse res = (HttpServletResponse)response;
        res.setHeader("Access-Control-Allow-Origin", "*");
        res.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
        res.setHeader("Access-Control-Max-Age", "3600");
        res.setHeader("Access-Control-Allow-Headers", "x-requested-with");
        chain.doFilter(request, response);
    }

    @Override
    public void destroy() {
        System.out.println("SimpleCORSFilter结束!!!===========");
    }

}

这种方法还适用于Servlet中,特别注意的是一定要在Filter动作之前加上这句话,也就是在代码的最前面加上这个话。

这里有个坑,Spring Boot以前的版本这样设置可以用Filter,但是在1.3.7.RELEASE不能用,所以用第二种方式是万能的。

推荐使用第二种,也就是以下方法:

package agriculture_basedata.util;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

@Configuration
public class CorsConfig extends WebMvcConfigurerAdapter {

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOrigins("*")
                .allowCredentials(true)
                .allowedMethods("GET", "POST", "DELETE", "PUT")
                .maxAge(3600);
    }

}

这个方法是万能的

这里在spring boot项目中应用的,所以没有其他配置文件,复制该代码就好了

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏bboysoul

linux 格式化硬盘

fdisk /dev/sda 输入o建立dos分区表 输入n建立一个新的分区 输入p建立一个主分区,或者输入e建立一个逻辑分区 之后输入分区号码mbr只...

28050
来自专栏iOSDevLog

Xcode 9 制作 iOS 通用 Framework创建 Framework模拟器和真机通用 FrameworkBundle使用 Framework

52070
来自专栏Android 开发学习

IntelliJ IDEA spring mvc +mybatis 环境搭建服务器(中)

26030
来自专栏电光石火

spring 在Thread中注入@Resource失败,总为null的解决方案

private MyMapper myDao;

25650
来自专栏SpringSpace.cn

在 ubuntu 12.10 中安装 opensips 1.8.2

解压软件包: tar -zxvf opensips-1.8.2_src.tar.gz

26520
来自专栏hbbliyong

SpringBoot解决ajax跨域问题

一、第一种方式: 1、编写一个支持跨域请求的 Configuration import org.springframework.context.annotati...

36440
来自专栏微服务那些事儿

Spring Cloud 系列-事件监听

强推一波:https://segmentfault.com/ls/1650000011386794

25940
来自专栏逸鹏说道

★Kali信息收集~★6.Dmitry:汇总收集

概述: DMitry(Deepmagic Information Gathering Tool)是一个一体化的信息收集工具。它可以用来收集以下信息: 1. 端口...

30890
来自专栏菩提树下的杨过

spring cloud:config-server中@RefreshScope的"陷阱"

spring cloud的config-serfver主要用于提供分布式的配置管理,其中有一个重要的注解:@RefreshScope,如果代码中需要动态刷新配置...

80570
来自专栏菩提树下的杨过

jboss eap 6.3 集群(cluster)-Session 复制(Replication)

本文算是前一篇的后续,java web application中,难免会用到session,集群环境中apache会将http请求智能转发到其中某台jboss ...

65270

扫码关注云+社区

领取腾讯云代金券