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,我可以注册,我可以登录。一切正常。另一台电脑 - 无法工作。电话 - 可以用。
当我禁用浏览器加载项时,问题就消失了。我想知道是否可能是因为 Elastic Beanstalk 中的后端没有 SSL 证书。