java - NodeJS 服务器到 Tomcat 服务器的 CORS 问题

标签 java node.js spring reactjs tomcat

我有使用 Java Spring 编写并部署在 tomcat 服务器上的后端 Web 服务,使用 HTTPS 协议(protocol)在端口 8443 上使用 IP 地址 XXX.XXX.XXX.XXX。

我有一个使用 React JS 和 create-react-app 脚手架编写的前端应用程序,它使用 jQuery AJAX 使用 JAVA spring 应用程序公开的其余 api 服务。我已经构建了 js 文件并进行了捆绑,并通过一个简单的 Node 服务器提供服务。该 Node 服务器托管在端口 8443 上的 IP 地址 YYY.YYY.YYY.YYY 上。

从浏览器到前端,我试图点击 POST 调用,但它在使用请求方法作为 OPTIONS 的飞行前操作失败。

尝试通过 HTTPS 协议(protocol)为 YYY.YYY.YYY.YYY 提供服务,但遇到同样的问题。

spring 应用程序启用了 CORS 过滤并接受来自任何域的请求。

需要遇到过相同问题的专家建议以及您是如何解决的。

最佳答案

这是一个非常常见的问题,有一个简单的解决方案。几周前我遇到过这个问题。这就是我修复它的方式。在您的 tomcat web.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>*</param-value>
 </init-param>
 <init-param>
   <param-name>cors.allowed.methods</param-name>
   <param-value>GET,POST,HEAD,OPTIONS,PUT,DELETE</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,Authorization,Content-
Disposition</param-value>
 </init-param> 
 <init-param>
   <param-name>cors.exposed.headers</param-name>
   <param-value>Access-Control-Allow-Origin,Access-Control-Allow-
    Credentials,Content-Disposition</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>

这绝对可以解决您的问题。享受

关于java - NodeJS 服务器到 Tomcat 服务器的 CORS 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44202786/

相关文章:

java - Java 9 中的新关键字

java - 搜索 Gray Log 2 API 或查询 ElasticSearch 的方法

java - 无法纠正我的 java 程序

android - 解析 xml 时出错 : Unbound prefix with the Facebook SDK

javascript - 将大型 txt 文件转换为任何结构化格式

javascript - 如何在没有 "restarting"进程的情况下重新加载 sails.js 应用程序?

Node.js/Socket.io 网络应用程序在本地完美且无限期地工作,但浏览器在 Heroku 上挂起

java - 存储查询中的计数值

javassist,获取doGet方法的第二个参数

java - 如何在 Spring 2.5 中处理自定义 Autowiring 对象?