Я пытаюсь сделать POST-запрос к моему бэкэнд-REST API, используя Fetch API браузера следующим образом:
submitRegistration() {
const formElement = document.getElementById('register-form');
fetch('http://localhost:8080/register', {
method: 'POST',
body: new FormData(formElement),
});
}
Я беру данные из этой формы:
<v-form id="register-form" @submit.prevent="submitRegistration" class="text-center" ref="form" v-model="valid" lazy-validation>
<v-text-field type="text" name="username" v-model="form.username" :counter="25" :rules="usernameRules" label="Username" required></v-text-field>
<v-text-field type="password" name="userPassword" v-model="form.password" :counter="25" :rules="passwordRules" label="Password" required></v-text-field>
<v-text-field type="text" name="userEmail" v-model="form.email" :rules="emailRules" label="E-mail" required></v-text-field>
<v-btn type="submit" text class="primary">Register</v-btn>
</v-form>
Однако в ответ я получаю 403 Forbidden от своего внутреннего сервера. Проблема в маркере CSRF, но я не знаю, как его сгенерировать, чтобы включить в запрос POST к бэкэнд-API.
EDIT : в Spring Boot настроено мое сопоставление CORS как это:
@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurer() {
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**").allowedOrigins("http://localhost:9000").allowCredentials(true);
}
};
}
Я публикую это, потому что возвращаемый объект Response
дает мне статус 403 и имеет тип "cors", даже если ошибка будет устранена, если я полностью отключу CSRF с помощью HttpSecurity - http.csrf().disable();