Spring Boot REST APIとReactベースのCMSがあります。
GET ajaxリクエストをAPIに送信すると、正常に動作します。しかし、POSTリクエストを送信すると、CORSエラーで停止します。
元の ' http:// localhost:3000 ' から' http:// localhost:8080 / item / add 'のXMLHttpRequestへのアクセスがCORSポリシーによってブロックされました:プリフライトリクエストへの応答がアクセス制御チェックに合格しません:いいえ 'アクセス-Control-Allow-Origin 'ヘッダーが要求されたリソースに存在します。
セキュリティを構成するためにWebSecurityConfigurerAdapterを使用しています。
BasicWebSecurityConfigurerAdapter.kt
override fun configure(http: HttpSecurity?) {
http?.csrf()?.disable()
http?.cors()
http?.authorizeRequests()
?.anyRequest()?.authenticated()
?.and()
?.httpBasic()
}
@Bean
fun corsConfigurationSource(): CorsConfigurationSource {
val configuration = CorsConfiguration()
configuration.allowedOrigins = mutableListOf("http://localhost:3000")
configuration.allowedMethods = mutableListOf("GET", "POST")
val source = UrlBasedCorsConfigurationSource()
source.registerCorsConfiguration("/**", configuration)
return source
}
RestControllersの代わりにアノテーションを使用してみましたが、GETリクエストが機能し、POSTリクエストが機能しないという同じ問題がありました。Spring Bootはまだかなり新しいので、何か足りないものがあると確信しています。
さて、コードを再度読んでいたときに、これが機能しない理由を見つけました。Spring Boot APIではなくCMSにバグがありました。間違ったAPIエンドポイントを使用していました。したがって、404エラーは発生しませんが、CORSエラーは発生します。
ただし、何らかの理由で、CORSはWebSecurityConfigurerAdapterを使用して機能しません。代わりに、コントローラで@CrossOriginアノテーションを使用することに戻りました。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加