Udało mi się przedłużyć TokenAuthentication
i mam działający model podczas używania sesji żądania do przechowywania moich tokenów, jednak gdy próbuję przekazać Authorization
jako parametr nagłówka as described here, zauważyłem, że moje odpowiedzi wracają bez zmiennej META HTTP_AUTHORIZATION . Zauważyłem również, że jeśli mijam „Authorization2” jako parametr nagłówka, który jest widoczny na życzenie:Brak nagłówka autoryzacji w django rest_framework, czy apache jest winien?
{
'_content_type': '',
'accepted_media_type': 'application/json',
'_request': <WSGIRequest
path:/api/test_auth/,
GET:<QueryDict: {}>,
POST:<QueryDict: {}>,
COOKIES:{
'MOD_AUTH_CAS_S': 'ba90237b5b6a15017f8ca1d5ef0b95c1',
'csrftoken': 'VswgfoOGHQmbWpCXksGUycj94XlwBwMh',
'sessionid': 'de1f3a8eee48730dd34f6b4d41caa210'
},
META:{
'DOCUMENT_ROOT': '/etc/apache2/htdocs',
'GATEWAY_INTERFACE': 'CGI/1.1',
'HTTPS': '1',
'HTTP_ACCEPT': '*/*',
'HTTP_ACCEPT_CHARSET': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3',
'HTTP_ACCEPT_ENCODING': 'gzip,deflate,sdch',
'HTTP_ACCEPT_LANGUAGE': 'en-US,en;q=0.8',
'HTTP_AUTHORIZATION2': 'Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4c',
...
Moje pierwsze przypuszczenie jest, że nagłówek autoryzacja jest usuwany przez apache, i czytałem kilka S/O pytania, które stwierdzają, że apache wyrzuci wartość, jeśli nie pasuje do podstawowej autoryzacji i uwierzytelnienia, ale nie mam pojęcia, jak zezwolić na przechodzenie nagłówka Authorization do Django i WSGIRequest. Czy ktoś wie, jak rozwiązać ten problem?
Używam również mod_auth_cas i mod_proxy, jeśli zmienia nic ..
Jest otwarty bilet do udokumentowania tej apache zachowanie: https://github.com/tomchristie/django-rest-framework/issues/488 Jeśli ktoś może rzucić nieco światła na np. Zachowanie Nginx w tym zakresie również byłoby pomocne. –
@ Tom Christie, tak to robisz z nginx: proxy_no_cache $ http_pragma $ http_authorization; proxy_cache_bypass $ http_pragma $ http_autoryzacja; proxy_set_header HTTP_AUTHORIZATION $ http_authorization; –
@SalvatoreIovene Widziałem wokół niego kilka uwag, kiedy kopałem. Prawdopodobnie ma to zastosowanie tylko w przypadku używania Nginx jako proxy. (?) –