前提
以下のライブラリでWebアプリケーションを開発しています。
フロントエンド側からバックエンド側へリクエストを送った際にCORSエラーとなります。
- フロントエンド:Vue.js(バージョン:3)
- バックエンド:SpringBoot(バージョン:2.7.6)
- 認証:SpringSecurity
実現したいこと
フロントエンド側からバックエンド側へリクエストを送った際に発生する以下のCORSエラーを解決したい。
Access to XMLHttpRequest at 'http://localhost:8085/users/profile/1' from origin 'http://localhost:8888' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
該当のソースコード
Vue.jsでSpring側へリクエストを送信する処理(Edit.vue)
JavaScript
1 onClickDelete() { 2 const path = 'users/profile/' 3 axios.delete( 4 process.env.VUE_APP_ROOT_API + path + this.$store.state.user_id,{ 5 headers: { 6 "Authorization": "Bearer " + this.$store.state.jwt_token, 7 }, 8 }) 9 .then(response => { 10 }) 11 .catch(error => { 12 console.log(error) 13 }) 14 },
Springで処理を受け取る処理(UsersController.java)
Java
1@RestController 2@RequestMapping("/users/profile") 3public class UsersController { 4 @DeleteMapping("/{user_id}") 5 @ResponseStatus(code = HttpStatus.NO_CONTENT, value = HttpStatus.NO_CONTENT) 6 public void profiledelete(@PathVariable("user_id") Long id) throws Exception { 7 } 8}
SpringSecurity設定ファイル(WebSecurityConfig.java)
Java
1@Profile("production") 2@Configuration 3@EnableWebSecurity 4public class WebSecurityConfig extends WebSecurityConfigurerAdapter { 5 @Autowired 6 private UserRepository userRepository; 7 private final JsonRequestAuthenticationProvider jsonRequestAuthenticationProvider; 8 @Value("${security.secret-key:secret}") 9 private String secretKey = "secret"; 10 11 public WebSecurityConfig(JsonRequestAuthenticationProvider jsonRequestAuthenticationProvider// , 12 ) { 13 this.jsonRequestAuthenticationProvider = jsonRequestAuthenticationProvider; 14 } 15 16 @Override 17 protected void configure(HttpSecurity http) throws Exception { 18 JsonRequestAuthenticationFilter jsonAuthFilter = 19 new JsonRequestAuthenticationFilter(userRepository); 20 jsonAuthFilter.setAuthenticationManager(authenticationManagerBean()); 21 http.cors().configurationSource(request -> new CorsConfiguration().applyPermitDefaultValues()); 22 http.addFilter(jsonAuthFilter); 23 http.authorizeRequests() 24 .anyRequest().authenticated() 25 .and() 26 .exceptionHandling().accessDeniedHandler(accessDeniedHandler()) 27 .and() 28 .csrf(). 29 disable() 30 .addFilterBefore(tokenFilter(), UsernamePasswordAuthenticationFilter.class) 31 .sessionManagement() 32 .sessionCreationPolicy(SessionCreationPolicy.STATELESS) 33 ; 34 }
試したこと
Springで処理を受け取る処理(UsersController.java)に@CrossOriginを付与
行ったこと
Springで処理を受け取る処理(UsersController.java)
Java
1@RestController 2@RequestMapping("/users/profile") 3@CrossOrigin 4public class UsersController { 5 @DeleteMapping("/{user_id}") 6 @ResponseStatus(code = HttpStatus.NO_CONTENT, value = HttpStatus.NO_CONTENT) 7 public void profiledelete(@PathVariable("user_id") Long id) throws Exception { 8 } 9}
結果
変わらずCORSエラーが表示される
補足情報
- SpringSecurityを導入する前は、Spring側で@CrossOriginを付与すれば、CORSエラーが解決していたような気がします。SpringSecurityでの設定を修正する必要があるのか。
- 他リクエストでGETメソッドの際は、Spring側とCORSエラーがでることなく成功する。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。