春季启动时出现Cors错误,将其与反应连接并尝试在tomcat或jboss服务器上部署?

Posted

技术标签:

【中文标题】春季启动时出现Cors错误,将其与反应连接并尝试在tomcat或jboss服务器上部署?【英文标题】:Cors error on spring boot connecting it with react and trying to deploy on tomcat or jboss server? 【发布时间】:2021-07-09 15:59:43 【问题描述】:

我有一个部署在 nginx 上的 React 应用程序,成功运行在 9000 端口上。

然后我将 Spring Boot War 文件部署在端口 8081 上的 tomcat 服务器 9xx 上。

我已经在 Spring Boot 中启用/添加了全局 Cors,但仍然面临这个问题。

正如我分析的那样,我没有从服务器返回任何响应标头。

在 spring boot 主类中我添加了这个

@Bean
    public WebMvcConfigurer corsConfigurer() 
        return new WebMvcConfigurer() 
            @Override
            public void addCorsMappings(CorsRegistry registry) 
                registry.addMapping("/**").allowedHeaders("*").allowedMethods("*").allowedOrigins("http://localhost:9000").allowCredentials(true);
            
        ;
    

并允许来自 http://localhost:9000 服务器

来自浏览器的请求因 cors 错误而失败,在此我的预检请求成功

因为我的 spring boot 部署在 8081

还有我的 NGINX 配置

我知道这个问题被问了很多,但我在过去的 7 到 8 个小时里一直被问到这个问题。

【问题讨论】:

看看这是否有帮助***.com/questions/45986631/… 端口 9000 nginx 服务器的 CORS 配置不相关。它绝对与问题中引用的错误消息无关。请求从前端 javascript 代码(从端口 9000 服务器提供)发送到端口 8081 Spring 服务器。因此,就 CORS 配置而言,唯一重要的是端口 8081 服务器上的 CORS 配置。因此,您可能想要更新问题以更改标题并删除有关 nginx CORS 配置的详细信息。这些只是分散了试图确定实际原因的注意力。 this SO thread 可以帮助设置 Spring Boot 吗? 我假设您在回答时没有从您进行设置的同一台机器上发出请求。您允许的来源不正确。请暂时使用“*”而不是“localhost:9000”。让我知道这是否有效。如果要限制来源,则应通过域进行。 Origin 指定请求的来源,而不是您指定的来源。 @timur NO,因为我没有使用弹簧安全 【参考方案1】:

您可以使用 proxy_pass 避免 CORS。将您的 NGINX 配置为代理(转发)所有以 '/api/' 开头的 URI 请求到位于 localhost:8081 的 Spring Boot。

upstream springboot_service 
    server localhost:8081;


location /api/ 
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-NginX-Proxy true;
                proxy_pass http://springboot_service/;
                proxy_ssl_session_reuse off;
                proxy_set_header Host $http_host;
                proxy_redirect off;
        

【讨论】:

@AjeetShah,但是 spring boot 没有附加响应头,我检查了,我认为因此这个错误正在发生 @John 您应该使用these answers 和this tutorial 重试。如果它仍然不起作用,我建议您按照该(官方)教程创建一个新的 Spring Boot 项目以更好地理解它。除了那些答案和教程中的解释外,别无他法。尝试简单而新鲜的项目;这将是调试它的最简单方法。 @AjeetShah,预检请求成功,但实际请求失败 @AjeetShah,可以通过连接来帮助我...,请让我坚持好几天 @AjeetShah 当我尝试在生产 tomcat 服务器上部署时,我成功地能够在本地环境中部署解决 cors。但仍然面临 JBOSS EAP 7.3 服务器的 CORS 问题。

以上是关于春季启动时出现Cors错误,将其与反应连接并尝试在tomcat或jboss服务器上部署?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我在 Spring Boot 中从服务器端配置并做出反应时出现 CORS 错误?

为 ReactGA 运行 pageView 时出现 CORS 错误

将 no-cors 包含在标头中以获取 react.js 中的 json 内容时出现奇怪的错误

尝试使用导入的 js 函数启动 html 页面时出现“CORS 策略已阻止从源‘null’访问脚本”错误

尝试在终端中启动反应应用程序时出现意外令牌 (9:13) 错误

将 Angular 与 JWT 的 Spring Boot 连接时出现 CORS 错误