У меня есть проблема, когда я получаю ответ при попытке использовать API отдыха: «Доступ к выборке в« https://kollektivet.app:8082/api/login/' из источника »https://kollektivet.app' заблокирован политикой CORS: Ответ на предварительный запрос не проходит проверку контроля доступа: перенаправление не разрешено для предварительного запроса. "
Изображение ответа при попытке получить
Это происходит, когда я пытаюсь использовать остальные API, которые я использую. Из того, что я прочитал, эта ошибка означает, что я пытаюсь перенаправить, а я нет.
Бэкэнд - Django и выглядит так:
@csrf_exempt
@api_view(["POST"])
@permission_classes((AllowAny,))
def register(request,):
password = request.data.get("password", "")
email = request.data.get("email", "")
if not email and not password and not email:
return Response(
data={
"message": "username, password and email is required to register a user"
},
status=status.HTTP_400_BAD_REQUEST
)
new_user = User.objects.create_user(
email=email, password=password
)
return Response(status=status.HTTP_201_CREATED)
И интерфейс находится в реакции, которая выглядит следующим образом:
createUser(event) {
event.preventDefault();
let data = {
name: this.state.name,
password: this.state.password,
repeatPassword: this.state.repeatPassword,
email: this.state.email
};
if (this.state.name !== '' && this.state.password !== '' && this.state.email !== '' && this.checkPasswords()) {
console.log('name', this.state.name, 'password ', this.state.password, 'email ', this.state.email);
fetch("https://kollektivet.app:8082/api/register/", {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
},
mode: "cors",
body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.log(error));
this.setState({message: "Du er nå registrert! For å aktivere din konto trykk på linken som vi har sendt til deg på epost"});
this.setState({name: ""});
this.setState({password: ""});
this.setState({repeatPassword: ""});
this.setState({email: ""});
}
}
У меня есть это файл настроек Django:
CORS_ORIGIN_ALLOW_ALL = True
CORS_ALLOW_HEADERS = (
'accept',
'accept-encoding',
'authorization',
'content-type',
'dnt',
'origin',
'user-agent',
'x-csrftoken',
'x-requested-with',
)
Я запускаю это на apache2, если это актуально.
Порт 8082 также закрыт. Должно ли это быть открыто, когда оно находится на том же сервере?
Спасибо!