`

java tomcat-catalina CorsFilter使用,apache tomcat-catalina CorsFilter使用,Springboot

阅读更多

java tomcat-catalina CorsFilter使用,apache tomcat-catalina CorsFilter使用,Springboot CORS跨域

 

================================

©Copyright 蕃薯耀 2020-11-26

http://fanshuyao.iteye.com/

 

org.apache.catalina.filters.CorsFilter为apache tomcat-catalina)组件。

一、官网地址

http://tomcat.apache.org/tomcat-9.0-doc/config/filter.html

 

二、Springboot使用cors-filter

1、引入依赖

<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-catalina</artifactId>
    <version>9.0.40</version>
    <exclusions>
    <exclusion>
        <groupId>org.apache.tomcat</groupId>
        <artifactId>*</artifactId>
    </exclusion>
    </exclusions>
</dependency>

 

2、配置类

import javax.servlet.Filter;

import org.apache.catalina.filters.CorsFilter;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * apache CorsFilter过滤器配置类
 */
@Configuration
public class HttpFilterConfig {

    /**
     * apache提供的跨域访问过滤器:org.apache.catalina.filters.CorsFilter
     * @return
     */
    @Bean
    public FilterRegistrationBean<Filter> corsFilter() {
        FilterRegistrationBean<Filter> registration = new FilterRegistrationBean<>();
        
        registration.setFilter(new CorsFilter());//org.apache.catalina.filters.CorsFilter
        
        //这个要设置成true
        //Defaults: false
        registration.addInitParameter("cors.support.credentials", "true");
        
        //这个默认是不允许访问的,可直接设置成 *
        //Defaults: The empty String. (No origin is allowed to access the resource).
        registration.addInitParameter("cors.allowed.origins", "http://127.0.0.1:7010");
        
        //这个可直接不配置
        //Defaults: GET, POST, HEAD, OPTIONS
        //registration.addInitParameter("cors.allowed.methods", "GET,POST");
        
        //这个可直接不配置
        //Defaults: Origin, Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers
        //registration.addInitParameter("cors.allowed.headers", "*");
        
        //这个可直接不配置
        //Default: None
        //registration.addInitParameter("cors.exposed.headers", "");
        
        //这个可直接不配置
        //Defaults: 1800。3600表示一个小时
        //registration.addInitParameter("cors.preflight.maxage", "3600");
        
        //这个可直接不配置
        //A flag to control if the request should be decorated or not. Defaults: true
        //registration.addInitParameter("cors.request.decorate", "true");
        
        
        registration.setName("CORSFilter"); //过滤器名称
        registration.addUrlPatterns("/*");//过滤路径
        registration.setOrder(1);//设置顺序
        return registration;
    }    
}

 

 

三、Spring Web应用使用cors-filter

1、引入Jar包,放在项目的/WEB-INF/lib/目录下

tomcat-catalina-9.0.40.jar

下载地址:

https://repo1.maven.org/maven2/org/apache/tomcat/tomcat-catalina/9.0.40/tomcat-catalina-9.0.40.jar

 

 

2、在WEB-INF/web.xml配置过滤器

<filter>
    <filter-name>CorsFilter</filter-name>
    <filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>CorsFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

 

 

四、参数说明

 

cors.allowed.origins
A list of origins that are allowed to access the resource. A * can be specified to enable access to resource from any origin. Otherwise, an allow list of comma separated origins can be provided. Eg: https://www.w3.org, https://www.apache.org. Defaults: The empty String. (No origin is allowed to access the resource).

 

cors.allowed.methods
A comma separated list of HTTP methods that can be used to access the resource, using cross-origin requests. These are the methods which will also be included as part of Access-Control-Allow-Methods header in pre-flight response. Eg: GET, POST. Defaults: GET, POST, HEAD, OPTIONS

 

cors.allowed.headers
A comma separated list of request headers that can be used when making an actual request. These headers will also be returned as part of Access-Control-Allow-Headers header in a pre-flight response. Eg: Origin,Accept. Defaults: Origin, Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers

 

cors.exposed.headers
A comma separated list of headers other than simple response headers that browsers are allowed to access. These are the headers which will also be included as part of Access-Control-Expose-Headers header in the pre-flight response. Eg: X-CUSTOM-HEADER-PING,X-CUSTOM-HEADER-PONG. Default: None. Non-simple headers are not exposed by default.

 

cors.preflight.maxage
The amount of seconds, browser is allowed to cache the result of the pre-flight request. This will be included as part of Access-Control-Max-Age header in the pre-flight response. A negative value will prevent CORS Filter from adding this response header to pre-flight response. Defaults: 1800

 

cors.support.credentials
A flag that indicates whether the resource supports user credentials. This flag is exposed as part of Access-Control-Allow-Credentials header in a pre-flight response. It helps browser determine whether or not an actual request can be made using credentials. Defaults: false

 

cors.request.decorate
A flag to control if CORS specific attributes should be added to HttpServletRequest object or not. Defaults: true

 

参数配置示例(Xml):

<filter>
  <filter-name>CorsFilter</filter-name>
  <filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
  <init-param>
    <param-name>cors.allowed.origins</param-name>
    <param-value>https://www.apache.org</param-value>
  </init-param>
  <init-param>
    <param-name>cors.allowed.methods</param-name>
    <param-value>GET,POST,HEAD,OPTIONS,PUT</param-value>
  </init-param>
  <init-param>
    <param-name>cors.allowed.headers</param-name>
    <param-value>Content-Type,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers</param-value>
  </init-param>
  <init-param>
    <param-name>cors.exposed.headers</param-name>
    <param-value>Access-Control-Allow-Origin,Access-Control-Allow-Credentials</param-value>
  </init-param>
  <init-param>
    <param-name>cors.support.credentials</param-name>
    <param-value>true</param-value>
  </init-param>
  <init-param>
    <param-name>cors.preflight.maxage</param-name>
    <param-value>10</param-value>
  </init-param>
</filter>
<filter-mapping>
  <filter-name>CorsFilter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

 

 

spring CORS跨域请求解决方案总结:(建议采用方案1)

1、springboot CORS 跨域请求解决三大方案,springboot CorsFilter解决跨域问题

https://www.iteye.com/blog/fanshuyao-2517777

 

2、cors-filter使用,cors-filter解决跨域访问,cors-filter跨域请求

https://www.iteye.com/blog/fanshuyao-2517803

 

3、org.ebaysf.web的cors-filter使用,cors-filter跨域请求

https://www.iteye.com/blog/fanshuyao-2517820

 

4、java tomcat-catalina CorsFilter使用,apache tomcat-catalina CorsFilter使用

https://www.iteye.com/blog/fanshuyao-2517821

 

5、springboot jsonp 跨域请求,springboot使用jsonp跨域

https://www.iteye.com/blog/fanshuyao-2517789

 

================================

©Copyright 蕃薯耀 2020-11-26

http://fanshuyao.iteye.com/

 

 

1
2
分享到:
评论

相关推荐

    tomcat-catalina-7.0.27.jar.zip

    Tomcat,作为Apache软件基金会的一个开源项目,是广泛使用的Java Servlet容器,尤其在轻量级应用服务器领域,其性能稳定、配置简单且免费开源的特点深受开发者喜爱。Catalina是Tomcat的核心组件,负责处理Servlet和...

    apache-tomcat-6.0.35和apache-tomcat-6.0.35 src

    Apache Tomcat是一款开源的Java Servlet容器,主要用于实现JavaServer Pages (JSP)、Servlet和Java EE的Web应用程序。在这个压缩包中,包含了两个版本:`apache-tomcat-6.0.35` 和 `apache-tomcat-6.0.35 src`。前者...

    apache-tomcat-6.0.29.zip

    14. **故障排查**:当应用出现问题时,可以检查Tomcat的日志、使用JMX(Java Management Extensions)进行远程监控,或通过`catalina.sh`脚本提供的选项进行诊断。 以上是关于Apache Tomcat 6.0.29的一些核心知识点...

    apache-tomcat-7.0.79.zip

    Apache Tomcat是一个开源的软件应用服务器,主要用于运行Java Servlet和JavaServer Pages(JSP)应用程序。这个"apache-tomcat-7.0.79.zip"压缩包包含了Apache Tomcat的7.0.79版本,这是一个稳定且广泛使用的版本。...

    apache-tomcat-8.5.16.tar.gz

    Apache Tomcat是一个开源的软件应用服务器,主要用于部署和运行Java Servlet和JavaServer Pages(JSP)应用程序。在本文中,我们将深入探讨Apache Tomcat 8.5.16版本的相关知识点,包括其功能、安装与配置、管理以及...

    apache-tomcat-8.5.42.zip 集成了 tomcat-redis-session

    最新的apache-tomcat-8.5.42版本+最新的tomcat-cluster-...配置了JAVA_OPTS,详见bin/catalina.sh及bin/catalina.bat文件 配置了manager账号密码,详见conf/tomcat-users.xml文件 卸载了webapps/examples及webapps/docs

    apache-tomcat-6.0.37

    Apache Tomcat 6.0.37 是一个广泛使用的开源软件,它是一个符合Java Servlet和JavaServer Pages(JSP)规范的应用服务器,专门用于运行基于Java的Web应用程序。Tomcat作为轻量级的Web服务器和应用服务器,因其简单、...

    apache-tomcat-9.0-windows-x64.zip 内置64位的三个版本尽情使用 吧少年

    Apache Tomcat是一款开源的Java Servlet容器,主要用于部署和运行Java Web应用程序。这个“apache-tomcat-9.0-windows-x64.zip”压缩包包含了专为64位Windows操作系统设计的Tomcat 9.0的三个不同版本。下面将详细...

    apache-tomcat-6.0.18

    Apache Tomcat 6.0.18 是一个广泛使用的开源软件,主要作为Java Servlet和JavaServer Pages (JSP) 的容器。它实现了Java EE的Web应用程序部署规范,是开发和运行Java Web应用的重要平台。Tomcat是Apache软件基金会的...

    apache-tomcat-9.0.13-windows-x64.zip

    Apache Tomcat是一个开源的软件应用服务器,主要用于部署和运行Java Servlet和JavaServer Pages(JSP)应用程序。这个压缩包"apache-tomcat-9.0.13-windows-x64.zip"是Apache Tomcat 9.0.13版本的64位Windows版...

    apache-tomcat-6.0.10.tar.gz_apache_apache安装包_tomcat6 un_unix tom

    Apache Tomcat是一款开源的Java Servlet容器,主要用于部署和运行Java Web应用程序,包括JSP和Servlet。这个"apache-tomcat-6.0.10.tar.gz"是Apache Tomcat的6.0.10版本,适用于Unix类操作系统,如Linux或macOS。此...

    apache-tomcat-8.0.21

    Apache Tomcat 8.0.21 是一个广泛使用的开源软件,主要作为Java Servlet和JavaServer Pages(JSP)的应用服务器。它是由Apache Software Foundation维护的,并且是Java EE(现在称为Jakarta EE)规范的重要实现之一...

    apache-tomcat-8.5.47.tar.gz

    Apache Tomcat 是一个开源的Java Servlet容器,它实现了Java EE中的Web应用服务器规范,特别是Servlet和JSP。这个"apache-tomcat-8.5.47.tar.gz"是一个针对Linux系统的Tomcat服务器版本的压缩包,使用的是tar.gz格式...

    apache-tomcat-10.0.12.tar.gz

    Apache Tomcat是一个开源的软件应用服务器,主要用于运行Java Servlets和JavaServer Pages(JSP)。在本案例中,我们讨论的是其版本10.0.12,它被打包成一个`.tar.gz`文件,这种格式是Linux系统中常见的归档和压缩...

    apache-tomcat-8.5.81.tar.gz

    10. **与其他Java EE组件的集成**: 虽然Tomcat主要是一个Servlet和JSP容器,但也可以与其他Java EE组件(如EJB、JMS等)集成,通过使用第三方库或容器(如Apache Geronimo或Red Hat JBoss AS)。 总的来说,"apache...

    apache-tomcat-9.0.2-windows-x64

    Apache Tomcat是一款广泛应用的开源Java Servlet容器,由Apache软件基金会维护。它实现了Java EE的Web应用程序规范,特别是Servlet和JSP。"apache-tomcat-9.0.2-windows-x64"指的是Tomcat的第9.0.2版本,针对64位...

    apache-tomcat-7.0.63-windows-x64.zip

    由Apache软件基金会维护,Tomcat是Java开发者广泛使用的工具,因为它是免费、开源且易于配置。7.0版本是Tomcat的一个稳定版本,发布于2014年,支持Java Servlet 3.0和JSP 2.2标准。 **Windows x64版本** 这个`.zip`...

    apache-tomcat-5.5.17-embed.tar.gz

    Apache Tomcat是一个开源的软件应用服务器,主要用于运行Java Servlets和JavaServer Pages(JSP)。在本案例中,我们讨论的是`apache-tomcat-5.5.17-embed.tar.gz`,这是一个精简版的Tomcat服务器,特别设计为可嵌入...

    apache-tomcat-7.0.70.tar.gz

    Apache Tomcat是一个开源的软件应用服务器,主要用于部署和运行Java Servlet和JavaServer Pages(JSP)应用程序。在本例中,我们关注的是`apache-tomcat-7.0.70.tar.gz`文件,这是一个针对Linux操作系统的Tomcat ...

    apache-tomcat-5.5.20和apache-tomcat-5.5.20-admin

    Apache Tomcat是一款开源的Java Servlet容器,主要用于运行Java Web应用程序,包括JSP和Servlet。这里的"apache-tomcat-5.5.20"和"apache-tomcat-5.5.20-admin"是Tomcat的一个特定版本,5.5.20,发布于较早的时间,...

Global site tag (gtag.js) - Google Analytics