【问题标题】:Spring MVC API call gets CORS error only when calling from Angular. Calling the API from Java works fine though仅当从 Angular 调用时,Spring MVC API 调用才会出现 CORS 错误。虽然从 Java 调用 API 工作正常
【发布时间】:2022-01-11 21:18:36
【问题描述】:

所以我的 API 是用 Java Spring MVC 编写的,托管在 AWS Elastic Beanstalk 上。当我从在我的计算机上本地运行的 Angular 应用程序调用我的 API 时,我收到一个 CORS 错误,指出它需要 Access-Control-Allow-Origin 标头。我在 Postman 中运行了一个选项请求,以查看我的 CORS 实现是否对预检选项请求不起作用。我可以看到所有正确的标题:

所以现在我完全不知道该怎么做。在调用 AWS Elastic Beanstalk 上的 API 时,我不断收到 CORS 错误。我很想听听关于尝试什么的任何想法。也许这与 Elastic Beanstalk 有关。

编辑:我尝试在 Java 中进行 API 调用并且效果很好,所以这似乎是一个 Angular 问题。特别是在 Angular 拨打电话时,还有其他人遇到过 CORS 问题吗?如果这很重要,我会在 Macbook Pro 上本地运行我的 Angular 应用程序。

【问题讨论】:

  • 看看这篇关于它的文章:keepgrowing.in/java/springboot/…
  • @alex87 感谢您的回复!我已经设置了另一种允许 CORS 的方法,但是我仍然尝试了这种方法以防万一。不幸的是,它对我不起作用。
  • 对不起,cors 可能会很痛苦。尤其是当您不使用 https 时。
  • @alex87 会使用 https 帮助解决我的问题吗?这对我来说绝对是一个选择
  • 您是否有理由不使用角度代理? angular.io/guide/build#proxying-to-a-backend-server

标签: angular spring cors amazon-elastic-beanstalk


【解决方案1】:

您可以尝试在您的 Srping mvc 应用程序中添加 cros 配置,看看它是否解决了您的问题。如果你使用spring boot,你可以像这样添加cors配置:

@Configuration
public class CorsConfig {
    @Bean
    public WebMvcConfigurer corsConfigurer() {
        return new WebMvcConfigurer() {
            @Override
            public void addCorsMappings(CorsRegistry registry) {
                registry.addMapping("/**")
                        .allowedOrigins(CorsConfiguration.ALL,"null")
                        .allowedMethods(CorsConfiguration.ALL)
                        .allowedHeaders(CorsConfiguration.ALL)
                        .allowCredentials(true);
            }
        };
    }
}

【讨论】:

  • 问题是我已经添加了CORS配置。当我在 Postman 中执行选项请求(相当于预检请求)时,我什至可以看到所有必要的 CORS 标头。但是,当我在我的 Angular 应用程序中尝试它时,它仍然给我在同一个 URL 上的 CORS 问题。
  • 你有没有为你的 Angular 应用添加 cors 配置,有人说添加这样的配置可能会解决问题:angular.module('myApp', []) .config(function($httpProvider) { $httpProvider.defaults.useXDomain = true; delete $httpProvider.defaults.headers .common['X-Requested-With']; });
  • @william0754 出于安全原因,强烈建议不要使用带有凭据的null 来源。
猜你喜欢
  • 2017-06-03
  • 2019-07-05
  • 2020-01-21
  • 2020-12-06
  • 2021-08-30
  • 2016-06-10
  • 1970-01-01
  • 2021-09-13
  • 2021-03-09
相关资源
最近更新 更多