AWS:Spring boot + Angular 应用程序中出现 CORS 错误 - 在某些计算机上

问题描述 投票:0回答:1

Elastic Beanstalk - 我使用 Corretto 17 创建了环境。 上传了我的 Spring Boot 应用程序的 JAR。

用户控制器:

@RestController
@RequestMapping("/api")
public class UserController {
...
    @PostMapping("/login")
    public LoginResponse loginUser(@RequestBody UserDto userDto) {
        return userService.loginUser(userDto);
    }

CORS配置:

@Configuration
@EnableWebSecurity
public class SecurityConfig {

...

    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        http
                .cors(withDefaults())
                .csrf(AbstractHttpConfigurer::disable)
                .authorizeHttpRequests(request -> request
                        .requestMatchers(POST, "/api/register").permitAll()
                        .requestMatchers(GET, "/api/register/confirm**").permitAll()
                        .requestMatchers(POST, "/api/login").permitAll()
                        .anyRequest().authenticated())
                .sessionManagement(session -> session.sessionCreationPolicy(STATELESS))
                .authenticationProvider(authenticationConfig.authenticationProvider())
                .addFilterBefore(jsonWebTokenFilter, UsernamePasswordAuthenticationFilter.class);
        return http.build();
    }

    @Bean
    public CorsConfigurationSource corsConfigurationSource() {
        CorsConfiguration configuration = new CorsConfiguration();
        configuration.addAllowedOrigin("*");
        configuration.setAllowedHeaders(Arrays.asList("Authorization", "Content-Type", "Accept"));
        configuration.setAllowedMethods(Arrays.asList("GET", "POST", "PUT", "DELETE"));
        configuration.setAllowCredentials(true);

        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", configuration);
        return source;
    }
}

Amazon S3 → 存储桶 → 带后端的存储桶 → 权限 → 跨源资源共享 (CORS):

[
    {
        "AllowedHeaders": [
            "*"
        ],
        "AllowedMethods": [
            "POST",
            "GET",
            "PUT",
            "DELETE"
        ],
        "AllowedOrigins": [
            "*"
        ],
        "ExposeHeaders": []
    }
]

在另一个存储桶中我安装了前端。

Angular,用户服务:

export class UserService {
  private baseUrl = 'http://mybook.eu-north-1.elasticbeanstalk.com/api';
...
  login(user: any): Observable<any> {
    return this.httpClient.post(`${this.baseUrl}/login`, user);
  }

我尝试使用 s3 存储桶中的 SecurityConfig 和 CORS 配置中的特定链接。 我在控制器类中尝试了@CrossOrigin。

编辑: 当我尝试注册或登录时发生 CORS - 对于我使用的计算机 (win10)。但我在另一台电脑上尝试过(win7,相同的互联网连接)。而且没有 CORS,我可以注册,我可以登录。一切正常。另一台电脑 - 无法工作。电话 - 可以用。

java angular spring-boot amazon-s3 amazon-elastic-beanstalk
1个回答
0
投票

当我禁用浏览器加载项时,问题就消失了。我想知道是否可能是因为 Elastic Beanstalk 中的后端没有 SSL 证书。

© www.soinside.com 2019 - 2024. All rights reserved.