Пользовательские заголовки отсутствуют в запросе, полученном в Django
Я работаю над проектом ReactJS/Django, где мне нужно отправить несколько пользовательских заголовков в Django из React.
Проблема: Пользовательские заголовки отсутствуют, когда запрос приходит в Django
.
Добавлены пользовательские заголовки - Token и User-Type
Приведите код ниже.
export async function post(url, requestBody = {}, auth_req=true) {
const token = window.sessionStorage.getItem("Token");
const user_type = window.sessionStorage.getItem("User-Type");
console.log("Header Data : ",token, user_type);
try{
const requestOptions = {
method: 'POST',
headers: {
"Content-Type": 'application/json',
"Token" : auth_req ? token : null,
"User-Type" : auth_req ? user_type : null
},
body: requestBody ? JSON.stringify(requestBody) : "{}"
};
console.log("POST URL is : ", url)
console.log("Request is : ", requestOptions)
const response = await fetch(url, requestOptions);
let json_response = await response.json()
console.log("Response is : ",json_response)
return json_response
}catch(e){
console.log("Service Failed: ", e)
return {
status: false,
messages: ["Service Failed. Please try after sometime."]
}
}
}
Console Output: - Согласно логам консоли, вся информация отправляется правильно
Но когда дело доходит до Django, все оказывается пустым.
В Django я проверяю информацию пользовательского заголовка в моем промежуточном ПО, и ниже приведен код
def __call__(self, request):
headers = request.headers
token = headers.get('Token')
user_type = headers.get('User-Type')
print(headers)
print("** Token : {} | User Type : {} ".format(token, user_type))
errors = self.authenticate_api_request(token, user_type)
if(len(errors) > 0):
return self.unauthorized_api_response(errors)
return self.get_response(request)
Settings.py:
#TODO
CORS_ALLOWED_ORIGINS = [
"http://localhost:3000",
]
CORS_ORIGIN_ALLOW_ALL = True
CUSTOM_HEADERS = (
'Access-Control-Allow-Origin',
'Token',
'User-Type'
)
CORS_ALLOW_HEADERS = default_headers + CUSTOM_HEADERS
#TODO
CORS_ORIGIN_WHITELIST = (
'localhost:3000',
'http://localhost:3000',
)
#TODO
ALLOWED_HOSTS = [
'127.0.0.1',
'localhost',
]
INSTALLED_APPS = [
...
'corsheaders',
...
]
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'middleware.authenticate.Authenticate',
'corsheaders.middleware.CorsMiddleware',
]