這是我的第一篇文章,如果我沒有包含您需要幫助我的所有正確資訊,請原諒我。
我創建了一個使用 Spring Security 的 Spring Boot 后端服務器 Rest API。當我通過我的 React 專案呼叫這個 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 相關,但我不確定。我希望有人能在這里指出正確的方向,如果我需要提供更多截圖,請告訴我。謝謝你。
uj5u.com熱心網友回復:
有時隱藏在 CROS 后面的其他內部服務器錯誤,請嘗試檢查應用程式日志,如果可能,將它們重定向到 cloudWatch 日志。
我懷疑Access-Control-Allow-Origin是導致您的 500 錯誤的原因,這不是問題的主要來源,是您代碼的其他部分導致了問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/395184.html
上一篇:CGB2111筆記的鏈接大全
