web-dev-qa-db-ja.com

Spring Boot Postリクエストの403エラーを解決する方法

私は春のブーツ休憩サービスの初心者です。私は、Mavenプロジェクトを使用して、スプリングブートでいくつかのREST APIを開発しました。

GetおよびPostAPIを開発しました。 MyGET郵便配達員と携帯電話で適切に機能するメソッド。 郵便局からポストメソッドをヒットしようとすると、正しく動作しますが、モバイルからは403禁止エラーが発生します

これは私の構成です:

spring.datasource.url = jdbc:mysql://localhost/sampledb?useSSL=false
spring.datasource.username = te
spring.datasource.password = test
spring.jpa.properties.hibernate.dialect= org.hibernate.dialect.MySQL5InnoDBDialect
Hibernate ddl auto (create, create-drop, validate, update)
spring.jpa.hibernate.ddl-auto = update

エラーを解決する方法を教えてください。

enter image description here

13

春のセキュリティでデフォルトで有効になっているため、csrf保護を無効にする必要があります。ここでは、cors Originを許可するコードを見ることができます。

import org.springframework.context.annotation.Bean;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.CorsConfigurationSource;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;

@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter{

    @Override
    protected void configure(HttpSecurity http) throws Exception{
        http.cors().and().csrf().disable();
    }

    @Bean
    CorsConfigurationSource corsConfigurationSource() {
        CorsConfiguration configuration = new CorsConfiguration();
        configuration.setAllowedOrigins(Arrays.asList("*"));
        configuration.setAllowedMethods(Arrays.asList("*"));
        configuration.setAllowedHeaders(Arrays.asList("*"));
        configuration.setAllowCredentials(true);
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", configuration);
        return source;
    }

}
34
Ezzat Eissa

考えられる原因:

  1. 郵便配達員からのリクエストは、モバイルからのリクエストとは異なります(uri、method、headers)
  2. 無効なトークン
  3. CORS(それについて何か読んでください、グーグルは記事でいっぱいです)@CrossOriginアノテーションをコントローラーに追加してください。
  4. モバイルアプリはPOSTを実行する前にOPTION要求を実行しており、OPTION要求をブロックします。郵便配達員からもOPTION要求がブロックされている場合は、プロパティspring.mvc.dispatch-options-request = trueを追加します。さらに、Springセキュリティを使用している場合、OPTION要求も明示的に許可する必要があります。
1
desoss