web-dev-qa-db-fra.com

Comment résoudre une erreur 403 dans une demande de publication de démarrage de printemps

Je suis novice dans les services de repos de démarrage du printemps. J'ai développé quelques api de repos dans les bottes de printemps en utilisant le projet Maven.

J'ai développé avec succès Get et Post Api. Ma [~ # ~] get [~ # ~] Méthode fonctionne correctement dans postman et mobile. lorsque j'essaie d'appuyer sur la méthode post de postman pour qu'il fonctionne correctement mais que sur mobile, il génère une erreur 403 interdite.

Ceci est ma configuration:

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

S'il vous plaît me suggérer comment résoudre l'erreur.

enter image description here

13
Harshal Deshmukh

vous devez désactiver la protection csrf car elle est activée par défaut dans la sécurité de printemps: vous pouvez voir ici le code qui autorise 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

Causes possibles:

  1. Les demandes faites par le facteur sont différentes de celles faites par le mobile (uri, méthode, en-têtes)
  2. Jeton invalide
  3. CORS (lisez quelque chose à ce sujet, Google regorge d'articles) ajoutez une annotation @CrossOrigin à votre contrôleur.
  4. application mobile effectue une demande OPTION avant d'effectuer le POST et bloque les demandes OPTION. Si également de postier les demandes OPTION sont bloquées, ajoutez la propriété spring.mvc.dispatch-options-request = true. De plus, si vous utilisez la sécurité de printemps, vous devez également autoriser explicitement les requêtes OPTION.
1
desoss