当前位置: 首页 > 知识库问答 >
问题:

在aws fargate上运行时,Spring靴被cors堵塞,但不在本地运行

澹台建华
2023-03-14

这是我的第一篇帖子,请原谅我没有提供您需要帮助我的所有正确信息。

我创建了一个使用Spring安全性的Spring启动后端服务器Rest API。当我通过我的反应项目调用这个api时,我最初得到一个500状态响应,告诉我请求已被CORS阻止。我解决了以下corsConfig文件的问题:

@Configuration
public class CorsConfig  {

    @Bean
    public WebMvcConfigurer corsConfigurer(){
        return new WebMvcConfigurer() {
            @Override
            public void addCorsMappings(CorsRegistry registry) {
                registry.addMapping("/**")
                        .allowedMethods("GET", "POST", "PUT", "DELETE")
                        .allowedHeaders("*")
                        .allowedOrigins("*");
            }
        };
    }

}

当我运行react项目(localhost:3000)和spring api(localhost:8080)时,一切都正常运行。我甚至可以从标题中看到它返回“Access Control Allow Origin:*”。

下面也是我的Spring安全配置:

@Override
    protected void configure(HttpSecurity http) throws Exception {

        http.cors().and();
        http.csrf().disable().authorizeRequests()
                .antMatchers("/api/auth/**").permitAll()
                .anyRequest().authenticated()
        .and().sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);

        http.cors();
        http.addFilterBefore(jwtRequestFilter, UsernamePasswordAuthenticationFilter.class);
    }

我现在遇到的问题是,我已经在aws ecs fargate上运行的docker容器上部署了spring boot api,现在我再次得到500状态响应,并且我还可以看到响应中不再存在标题“Access Control Allow Origin:*”。

所以要快速总结一下。本地一切正常,只有在调用运行AWS的后端api时,问题才出现。

我还尝试在restController类上使用@CrossOrigin(origins=“*”)。

我在那里发现了类似的问题,但它们似乎都是当人们在本地运行他们的应用程序时出现的,并且已经被我已经使用的解决方案修复了。

在我看来,这个问题似乎与AWS有关,但我不确定。我希望有人能在这里给我指明正确的方向,如果我需要提供更多的截图,请告诉我。谢谢你。

共有1个答案

慎望
2023-03-14

有时隐藏在CROS后面的其他内部服务器错误,请尝试检查应用程序日志,如果可能,将它们重定向到Cloud Watch日志

我怀疑Access Control Allow Origin导致了您的500个错误,它不是问题的主要来源,是您代码的其他部分导致了问题。

 类似资料:
  • 我一直试图提交一个简单的python脚本,以便在一个带有Yarn的集群中运行它。当我在本地执行作业时,没有问题,一切都很好,但当我在集群中运行它时,它就失败了。 诊断:文件不存在:hdfs://myserver:8020/user/josholsan/.sparkstaging/application_1510046813642_0010/test.py 我不知道为什么它找不到test.py,我也

  • 我已经使用Appium和Java以及TestNG为Android应用程序编写了一些测试。我的测试在模拟器上本地运行良好,但当我将它们上传到设备场时,我的测试总是失败。我已经尽可能地简化了我的测试,但它仍然不起作用。目前,我尝试运行的测试会在打开应用程序时出现的提示中找到并单击“允许权限”按钮。代码: 观看Device Farm提供的视频,我可以看到它打开并立即关闭我的应用程序。它甚至没有像应该的那

  • 我创建了一个测试项目(maven)来测试REST API的性能。我正在使用Jeter插件 这是我的pom片段 我有一个Jenkins文件在我的项目像这样 当我触发Jenkins上的构建时,构建成功了,我在控制台输出中看到了这一点 问题是,它什么也做不了。Performace趋势图没有显示任何东西。 如果我在本地机器上运行相同的项目,它工作得非常好。我在日志中看到类似的东西,证实了这一点。生成的输出

  • 问题内容: 我在CI和CD上创建了Jenkinsfile,Dockerfile,Dockerfile.test到CI和CD,在GitHub上构建了我的服务器API,我在Jenkins上构建了该构建,并且构建成功,并且我的docker在Jenkinsfile阶段也在容器上运行,我创建了用于测试和部署在服务器API上,并使用docker作为容器 我也使用docker-compose在docker上运行

  • 我创建了一个JasperReport应用程序,它在tomcat服务器上运行良好。但是当我使用相同的jar在Jboss上运行时,它会显示错误 原因:java.lang.ClassCastException:org.apache.xerces.jaxp.DocumentBuilderFactoryImpl无法强制转换为javax.xml.parsers.DocumentBuilderFactor.ne