Конфигурации CORS в Django не работают в производстве
Я работаю над приложением для чата с Django на бэкенде и React на фронтенде. Оба хостятся на отдельных доменах на vercel.
Я добавил конфигурации CORS в back-end, но они, похоже, не работают в production.
Ниже приведены конфигурации CORS, выполненные в Django:
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'corsheaders.middleware.CorsMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
ALLOWED_HOSTS = ['.vercel.app']
CORS_ALLOW_CREDENTIALS = True
CORS_ALLOWED_ORIGINS = ['https://texter-frontend.vercel.app',]
Вот один из запросов с фронт-энда:
const backendServerEndpoint = 'https://texter-backend-jp24ejwc8-sourav-pys-projects.vercel.app';
const requestData = {
'phoneNumber' : phoneNumber
};
fetch(backendServerEndpoint + '/auth/sendotp/',{
method: "POST", // *GET, POST, PUT, DELETE, etc.
mode: "cors", // no-cors, *cors, same-origin
credentials: 'include',
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify(requestData),
})
.then(
response => {
if(response.status === 200){
setOtpSent(true);
response.json()
.then(
responseData => {
console.log(responseData);
if(responseData.newProfile){
console.log("It is a new profile!!!");
setNewProfile(true);
}
}
)
}
}
)
.catch(
error => {
console.log(error);
}
)
Вот ошибка, которую я получаю в консоли:
Доступ к выборке по адресу 'https://texter-backend-jp24ejwc8-sourav-pys-projects.vercel.app/auth/sendotp/' из источника 'https://texter-frontend.vercel.app' был заблокирован политикой CORS: На запрашиваемом ресурсе отсутствует заголовок 'Access-Control-Allow-Origin'. Если вам нужен непрозрачный ответ, установите режим запроса на 'no-cors', чтобы получить ресурс с отключенным CORS.
P.S.: Когда я развертываю его на своей локалке, заменив URL-адреса vercel на localhost/127.0.0.1, он работает нормально.
https://github.com/sourav-py/texter_backend https://github.com/sourav-py/texter_frontend
Спасибо.