首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用嵌入式服务器和spring boot的Cors可以正常工作,但在使用tomcat 9进行部署时则不起作用

嵌入式服务器和Spring Boot的CORS(跨源资源共享)可以正常工作,但在使用Tomcat 9进行部署时不起作用的原因可能是Tomcat 9的默认配置不支持CORS。

CORS是一种浏览器机制,用于控制跨域请求资源的访问权限。在嵌入式服务器和Spring Boot中,CORS可以通过配置相关的跨域策略来实现。但是在使用Tomcat 9进行部署时,需要手动配置Tomcat的CORS过滤器才能使其生效。

要解决这个问题,可以按照以下步骤进行操作:

  1. 在Tomcat 9的安装目录下找到conf文件夹,进入该文件夹。
  2. conf文件夹中创建一个名为Catalina的文件夹(如果已存在则跳过此步骤)。
  3. 进入Catalina文件夹,创建一个名为localhost的文件夹(如果已存在则跳过此步骤)。
  4. 进入localhost文件夹,创建一个名为WEB-INF的文件夹(如果已存在则跳过此步骤)。
  5. 进入WEB-INF文件夹,创建一个名为web.xml的文件。
  6. 编辑web.xml文件,添加以下内容:
代码语言:txt
复制
<?xml version="1.0" encoding="UTF-8"?>
<web-app>
    <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>*</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>
    </filter>
    <filter-mapping>
        <filter-name>CorsFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>

上述配置中,cors.allowed.origins表示允许的跨域请求源,cors.allowed.methods表示允许的请求方法,cors.allowed.headers表示允许的请求头。

  1. 保存web.xml文件。
  2. 重新启动Tomcat 9。

通过以上步骤,我们在Tomcat 9中添加了一个CORS过滤器,并配置了允许的跨域请求源、请求方法和请求头。这样就可以使Tomcat 9支持CORS,从而解决了CORS在使用Tomcat 9进行部署时不起作用的问题。

请注意,以上解决方案是基于Tomcat 9的默认配置进行的,如果你对Tomcat的配置进行了修改,可能需要根据实际情况进行相应的调整。

关于嵌入式服务器、Spring Boot、CORS以及Tomcat的更多详细信息,你可以参考腾讯云的相关产品和文档:

  1. 嵌入式服务器:嵌入式服务器是一种轻量级的服务器,可以直接嵌入到应用程序中,提供Web服务。腾讯云提供了云服务器(CVM)产品,可用于搭建嵌入式服务器。了解更多信息,请访问腾讯云云服务器产品介绍
  2. Spring Boot:Spring Boot是一个用于简化Spring应用程序开发的框架。它提供了自动配置、快速开发等特性,可以帮助开发人员快速构建独立的、生产级别的Spring应用程序。腾讯云提供了云开发(CloudBase)产品,支持Spring Boot应用程序的部署和管理。了解更多信息,请访问腾讯云云开发产品介绍
  3. CORS:跨源资源共享(CORS)是一种浏览器机制,用于控制跨域请求资源的访问权限。了解更多关于CORS的信息,请参考MDN Web文档中的CORS介绍
  4. Tomcat:Tomcat是一个开源的Java Servlet容器,用于实现Java Servlet和JavaServer Pages(JSP)规范。腾讯云提供了云服务器(CVM)产品,可用于部署Tomcat应用程序。了解更多信息,请访问腾讯云云服务器产品介绍

希望以上信息能够帮助到你,如果还有其他问题,请随时提问。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Spring Boot 面试,一个问题就干趴下了!

具体详细可以参考:Spring Boot 为什么这么火? 问:Spring Boot Starter 的工作原理是什么?...让我们来思考如何使服务器成为应用程序的一部分? 你只需要一个安装了 Java 的虚拟机,就可以直接在上面部署应用程序了, 是不是很爽? 这个想法是嵌入式服务器的起源。...当我们创建一个可以部署的应用程序的时候,我们将会把服务器(例如,tomcat)嵌入到可部署的服务器中。...例如,对于一个 Spring Boot 应用程序来说,你可以生成一个包含 Embedded Tomcat 的应用程序 jar。你就可以像运行正常 Java 应用程序一样来运行 web 应用程序了。...嵌入式服务器就是我们的可执行单元包含服务器的二进制文件(例如,tomcat.jar)。 三、微服务同时调用多个接口,怎么支持事务的啊?

60650

Spring Boot 面试,一个问题就干趴下了!

让我们来思考如何使服务器成为应用程序的一部分? 你只需要一个安装了 Java 的虚拟机,就可以直接在上面部署应用程序了,是不是很爽? 这个想法是嵌入式服务器的起源。...当我们创建一个可以部署的应用程序的时候,我们将会把服务器(例如,tomcat)嵌入到可部署的服务器中。...例如,对于一个 Spring Boot 应用程序来说,你可以生成一个包含 Embedded Tomcat 的应用程序 jar。你就可以像运行正常 Java 应用程序一样来运行 web 应用程序了。...嵌入式服务器就是我们的可执行单元包含服务器的二进制文件(例如,tomcat.jar)。 三、微服务同时调用多个接口,怎么支持事务的啊?...它利用 Spring Boot 的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用 Spring Boot 的开发风格做到一键启动和部署

1K30
  • 微服务架构之Spring Boot(三十九)

    28.4.5 JSP限制 运行使用嵌入式servlet容器的Spring Boot应用程序(并打包为可执行存档)时,JSP支持存在一些限制。...使用Jetty和Tomcat,如果使用war包装,它应该可以工作。使用 java -jar 启动时,可执行战争将起作用,并且还可以部署到任何标准容 器。使用可执行jar时不支持JSP。...28.5嵌入式Reactive Server支持 Spring Boot包括对以下嵌入式响应式Web服务器的支持:Reactor Netty,Tomcat,Jetty和Undertow。...大多数开发人员使用适当 的“Starter”来获取完全配置的实例。默认情况下,嵌入式服务器在端口8080上侦听HTTP请求。...默认情况下,这些资源也将与Reactor Netty和Jetty客户端共享以获得最佳性能,具体如下: 相同的技术用于服务器和客户端 客户端实例使用由Spring Boot自动配置的 WebClient.Builder

    79320

    超详细的Spring Boot教程,搞定面试官!

    (3)嵌入式内存LDAP服务器 8.10、InfluxDB (1)连接到InfluxDB 9、缓存 9.1、支持的缓存提供程序 (1)通用 (2)JCache(JSR-107) (3)EhCache...Spring应用程序 20.3、测试Spring Boot应用程序 (1)检测Web应用程序类型 (2)检测测试配置 (3)不包括测试配置 (4)使用运行的服务器进行测试 (5)嘲笑和侦察豆 (6)自动配置的测试...Beanstalk 使用Tomcat平台 使用Java SE平台 (2)概要 1.5、Boxfuse和亚马逊网络服务 1.6、Google Cloud 2、安装Spring Boot应用程序...、使用'短'命令行参数 2.5、使用YAML作为外部属性 2.6、设置活动的弹簧配置文件 2.7、根据环境更改配置 2.8、发现外部属性的内置选项 3、嵌入式Web服务器 3.1、使用另一个Web服务器...应用程序 12.9、在不使用的情况下从Ant构建可执行文件 spring-boot-antlib 13、传统部署 13.1、创建一个可部署的战争文件 13.2、为较老的Servlet容器创建一个可部署的战争文件

    7.1K20

    Spring Boot系列 – 2. Spring Boot提供的特性

    六、开发web应用 Spring Boot非常适合开发web应用。你可以使用内嵌的Tomcat,Jetty或Undertow轻松创建一个HTTP服务器。...嵌入的servlet容器 Spring Boot支持内嵌的Tomcat, Jetty和Undertow服务器。多数开发者只需要使用合适的’Starter POM’来获取一个完全配置好的实例即可。...Spring boot自动配置DataSource池时的选择顺序如下: 由于Tomcat数据源连接池的性能和并发,在tomcat可用时,我们总是优先使用它。 如果HikariCP可用,我们将使用它。...当部署到一个恰当的J2EE应用服务器时也会支持JTA事务。  当发现一个JTA环境时,Spring Boot将使用Spring的JtaTransactionManager来管理事务。...Buildpack将你部署的代码打包进任何启动应用所需的包里:可能是个JDK和一个java调用,可能是一个嵌入式web服务器,也可能是一个完整的应用服务器。

    1.8K30

    Spring Boot 中文参考指南(二)-Web

    WAR部署中的错误处理 当部署到servlet容器时,Spring Boot使用其错误页面过滤器将具有错误状态的请求转发到适当的错误页面。...6.1.3 嵌入式Servlet容器支持 对于servlet应用程序,Spring Boot包括对嵌入式Tomcat、Jetty和Undertow服务器的支持。...JSP限制 当运行使用嵌入式servlet容器(并打包为可执行存档)的Spring Boot应用程序时,JSP支持有一些限制。 有了Jetty和Tomcat,如果你使用war打包,它应该可以工作。...当使用java -jar启动时,可执行war将起作用,也可以部署到任何标准容器中。使用可执行jar时不支持JSP。 Undertow不支持JSP。...Spring Boot包括对以下嵌入式反应式网络服务器的支持:Reactor Netty、Tomcat、Jetty和Undertow。

    4K30

    饿了么三面:让你怀疑人生的Spring Boot夺命连环40问

    用来简化spring应用的初始搭建以及开发过程 使用特定的方式来进行配置(properties或yml文件) 创建独立的spring引用程序 main方法运行 嵌入的Tomcat 无需部署war文件...这可以使用DEV工具来实现。通过这种依赖关系,您可以节省任何更改,嵌入式tomcat将重新启动。 Spring Boot有一个开发工具(DevTools)模块,它有助于提高开发人员的生产力。...我们为什么要使用嵌入式服务器呢? 思考一下在你的虚拟机上部署应用程序需要些什么。...当我们创建一个可以部署的应用程序的时候,我们将会把服务器(例如,tomcat)嵌入到可部署的服务器中。...嵌入式服务器就是我们的可执行单元包含服务器的二进制文件(例如,tomcat.jar)。 19、如何在 Spring Boot 中添加通用的 JS 代码?

    1.4K40

    精选SpringBoot面试题(附刷题小程序)

    用来简化Spring应用的初始搭建以及开发过程,使用特定的方式来进行配置 创建独立的Spring引用程序main方法运行 嵌入的tomcat无需部署war文件 简化maven配置 自动配置Spring添加对应的功能...当用户登录以后,正常使用;当用户退出登录状态时或者token过期时,由于拦截器和跨域的顺序有问题,出现了跨域的现象。...它使文档能够以与服务器相同的速度更新。当通过Swagger 正确定义时,消费者可以使用最少量的实现逻辑来理解远程服务并与其进行交互。因此,Swagger 消除了调用服务时的猜测。 部署? 这可以使用 DEV 工具来实现。通过这种依赖关系,您可以节省任何更改,嵌入式tomcat 将重新启动。...开发人员可以重新加载 Spring Boot 上的更改,而无需重新启动服务器。这将消除每次手动部署更改的需要。Spring Boot 在发布它的第一个版本时没有这个功能。这是开发人员最需要的功能。

    2.8K40

    SpringBoot-打包&部署

    打成 JAR 包Spring Boot 默认自带了一个嵌入式的 Tomcat , 支持以 jar 方式运行.① pom.xml 添加打包插件xml 代码解读复制代码 Tomcat 的 webapps 目录下, 启动 Tomcat 即可自动解压部署.⑥ 访问访问地址为: http://服务器ip:服务器里Tomcat配置的端口/项目名/接口路径注意...:项目名以 Tomcat 的 webapps 目录下解压后的文件夹名字为准, 由于不使用 Spring Boot 自带的 Tomcat, 所以 yml 文件里的 server 配置不起作用.打包之后,...war 包方便呢, 使用 war 包时, 虽然要部署到 Tomcat 中, 但只需要将修改的 class 替换一下, 重启一下 Tomcat 就可以快速部署了.瘦身前的Jar包Tomcat 在部署 Web...工程的时候, 可以进行增量更新, 其实, Spring Boot 也是可以的.

    22110

    Spring Boot 2.5.5发布:开始支持Java 17了!

    作者 | 冷冷 来源 | https://mp.weixin.qq.com/s/hlxkXLve1krPr9z3DPrNIw 9 月 23 日官方发布了 Spring Boot 2.5.5 版本,此版本包括...和 Spring Integration 的 DataSource 初始化时由于非空模式下导致启动失败#28079 当过滤器抛出 NestedServletException 以外的异常时,Web MVC...指标可能具有错误的状态#28069 URL 中包含特殊字符时,嵌入式 Undertow 抛出 MalformedURLException #28032 并发镜像构建导致删除构建器镜像时出错#27993...独立 Tomcat 中的 War 部署会导致内存泄漏 运行大于 4GB 的 Zip64 jar 文件时出现 IndexOutOfBoundsException #27900 在 Windows 上未正确检测到...-2x/ 文档调整 使用 AspectJ weaving 时 devtools 重启不起作用 #28083 spring.data.elasticsearch.client.reactive.endpoints

    1.6K20

    面试必问的40个SpringBoot面试题!需要的拿走SpringBoot面试题【建议收藏】

    这可以使用DEV工具来实现。通过这种依赖关系,您可以节省任何更改,嵌入式tomcat将重新启动。 Spring Boot有一个开发工具(DevTools)模块,它有助于提高开发人员的生产力。...我们为什么要使用嵌入式服务器呢? 思考一下在你的虚拟机上部署应用程序需要些什么。...当我们创建一个可以部署的应用程序的时候,我们将会把服务器(例如,tomcat)嵌入到可部署的服务器中。...例如,对于一个 Spring Boot 应用程序来说,你可以生成一个包含 Embedded Tomcat 的应用程序 jar。你就可以想运行正常 Java 应用程序一样来运行 web 应用程序了。...嵌入式服务器就是我们的可执行单元包含服务器的二进制文件(例如,tomcat.jar)。 19、如何在 Spring Boot 中添加通用的 JS 代码?

    12.4K31

    SpringBoot进阶

    Spring Boot简介 采用约定大于配置,简化Spring开发步骤与复杂的部署流程 快速创立可独立运行的Spring项目以及集成主流框架 嵌入式Servlet容器,无需打war包 starter自动依赖与版本控制...嵌入式Servlet容器 SpringBoot默认使用的是嵌入式的Servlet容器(Tomcat) 1)定制和修改Servlet容器的相关配置 server.port=8081 server.servlet.context-path...() throws BeansException { } **子容器重写该方法:**就会创建嵌入式的Servlet容器 子容器的抽象类下面的实现类,Tomcat是使用SerlvetWebServerApplicaitonContext...使用外置的Servlet容器 嵌入式简单便捷、优化定制比较复杂,使用定制器或properties等来改变 外置的Serlvlet容器:外面安装Tomcat服务器--应用打包war包打包 必须创建war包...将嵌入式Tomcat指定为provided 必须编写一个ServletInitializer,并调用configure方法 启动服务器 外置Servlet容器的启动原理, jar包:执行Spring主类的

    92620

    SpringBoot解决内、外tomcat部署兼容问题

    但在线上环境需要放入外部的tomcat部署,这时候你会发现如果不做任何的处理是无法在外部tomcat启动的。 ? 那么如何才能让springBoot项目才能在外部tomcat部署呢?...调用了这个入口,进而使用内部的tomcat实现了服务的部署。...也就是说其实根本就不需要导入spring-boot-starter-tomcat,只要不排除web包下的tomcat,依然能够实现本地main方法,和外部tomcat的部署的兼容性问题。 ?...而还有些项目中既没有排除web包下的tomcat,又同时导入了spring-boot-starter-tomcat,同样也能实现本地main方法,和外部tomcat的部署,这又是怎么回事呢?...这也就能解释为什么web下的tomcat和导入的spring-boot-starter-tomcat为什么能够共存而不引起冲突,那是因为压根就轮不到web下的tomcat起作用,当导入了spring-boot-starter-tomcat

    2.9K20

    Cors跨域(三):Access-Control-Allow-Origin多域名?

    做Java开发的小伙伴对Tomcat再熟悉不过,但由于Spring Boot的普及它屏蔽了开发者对Web Server的感知,所以可能虽然天天用但其实鲜有接触,特别是standalone的Tomcat服务器...这样通过如图中的3个域名就都可对页面进行正常访问啦 ? ? 3. 书写前端html页面 multiple_origins_cors.html内容如下 的使用Cors会造成一些可能的漏洞,比如最常见的便是当允许多个域名跨域请求时,很多同学为了方便就将Access-Control-Allow-Origin写为*,或者在Ng...说明:关于Spring/Spring Boot场景下对Cors跨域问题的解决方案以及原理分析,本系列已安排在下下篇详细剖析 补充:Vary: Origin解决缓存问题 在文章最后想补充一个“小知识点...它是一个HTTP响应头,决定了对于下一个请求,应该使用缓存还是向源服务器请求一个新的Response,和内容协商(你知道的,内容协商也属于我的一个技术专栏)有关。

    7.3K33

    【2022最新Java面试宝典】—— SpringBoot面试题(44道含答案)

    SpringBoot Starter的工作原理 8. Spring Boot 2.X 有什么新特性?与 1.X 有什么区别? 9. SpringBoot支持什么前端模板, 10....Spring boot 监视器可帮助您访问生 产环境中正在运行的应用程序的当前状态。有几个指标必须在生产环境中进行检查和监控。即使一 些外部应用程序可能正在使用这些服务来向相关人员触发警报消息。...如何重新加载 Spring Boot 上的更改,而无需重新启动服务器?Spring Boot项目如何热部署? 这可以使用 DEV 工具来实现。...通过这种依赖关系,您可以节省任何更改,嵌入式tomcat 将重新启 动。Spring Boot 有一个开发工具(DevTools)模块,它有助于提高开发人员的生产力。...Java 开 发人员面临的一个主要挑战是将文件更改自动部署到服务器并自动重启服务器。开发人员可以重新 加载 Spring Boot 上的更改,而无需重新启动服务器。这将消除每次手动部署更改的需要。

    1.4K10

    Spring Boot 核心编程思想-第一部分-读书笔记「建议收藏」

    也就是JarLauncher 和 WarLauncher 本质上 无差别,建议 Spring boot应用使用非传统Web部署时,尽可能使用JAR归档的方式。...:引入 spring-boot-maven-plugin 插件时,需要配置 repackage元素,否则不会添加Spring boot的引导依赖。...第4章 理解嵌入式Web容器 首先理解嵌入容器,基本上大一点的Web容器,自身都提供了嵌入式容器的支持。然后大致就能明白SpingBoot的嵌入式容器,Spring Boot对嵌入式容器进行了封装。...Servlet规范和实现三种容器版本的对应关系: Servlet4.0规范 :tomcat 9.x Jetty9.x Undertow2.x Servlet3.1规范:tomcat 8.x Jetty8...image.png Tomcat 插件插件生成jar包 和Spring boot 生成jar的区别 1、Tomcat maven插件,本质上还是传统的Tomcat部署,先将WEB应用打包为ROOT.war

    92910

    为什么说 Java 程序员到了必须掌握 Spring Boot 的时候?

    Spring 开发者意识到这里的绝大多数工作是可以可以自动化的,Spring Boot 出现了!...Spring boot 2.0(2018 年 03 月)-基于 Java 8,支持 Java 9,支持 Quartz ,调度程序大大简化了安全自动配置,支持嵌入式 Netty Spring Boot 简单性使...这意味着如果使用特定的 Spring IO 版本创建项目,则不再需要定义库的版本。即使是 Spring Boot 启动项目也是这个 Spring IO 的一部分。...以往我们做Spring应用开发,要知道配置哪些类来让Hibernate和Spring一起工作,要知道如何配置view resolver来控制哪个模版进行视图层的展示。...开发完成之后,我们还要考虑部署的问题,且不说部署到非常笨重的应用服务器,比如WebSphere, Weblogic或者JBoss,即使部署到Tomcat或者Jetty这种轻量级容器上面,我们要知道如何配置容器

    69620

    SpringBoot 面试问答总结(VIP典藏版),最详细!全面!爆肝!

    这种解决方案并非 Spring Boot 特有的,在传统的SSM 框架中,就可以通过 CORS 来解决跨域问题,只不过之前我们是在 XML 文件中配置 CORS , 现在可以通过实现WebMvcConfigurer...将 Servlet 容器由 Tomcat 变成 Undertow JVM 调优 37.如何重新加载 Spring Boot 上的更改,而无需重新启动服务器?Spring Boot项目如何热部署?...这可以使用 DEV 工具来实现。通过这种依赖关系,您可以节省任何更改,嵌入式tomcat 将重新启动。...Spring Boot 有一个开发工具**(DevTools)模块**,它有助于提高开发人员的生产力。 Java开发人员面临的一个主要挑战是将文件更改自动部署到服务器并自动重启服务器。...开发人员可以重新加载 Spring Boot上的更改,而无需重新启动服务器。这将消除每次手动部署更改的需要。SpringBoot 在发布它的第一个版本时没有这个功能。 这是开发人员最需要的功能。

    1.7K80

    Spring Boot概述

    它使用全新的开发模型,通过避免一些繁琐的开发步骤和样板代码和配置,使Java开发非常容易。 Spring Boot可以轻松创建单独的,生产级的基于Spring的应用程序,我们只管“运行”。...Spring Boot核心和限制 Spring Boot不是编写应用程序的框架,它可以帮助我们以最少的配置或零配置开发和构建,打包和部署应用程序。它不是应用程序服务器。...但是它是提供应用程序服务器功能的嵌入式servlet容器,而不是Spring Boot本身。类似地,Spring Boot不实现任何企业Java规范,例如JPA或JMS。...5.它遵循“自用默认配置”方法,以减少开发工作量。6.它提供嵌入式HTTP服务器,如Tomcat,Jetty等,以开发和测试Web应用程序非常容易。...8.它提供了许多插件来开发和测试Spring启动应用程序非常容易使用构建工具,如Maven和Gradle。9.它提供了许多插件,以便与嵌入式和内存数据库工作非常容易。

    36650
    领券