Come posso abilitare CORS sul mio Django REST Framework? il reference non aiuta molto, dice che posso fare da un middleware, ma come posso farlo?Come posso abilitare CORS su Django REST Framework
risposta
Il link si fa riferimento nella sua interrogazione consiglia di utilizzare django-cors-headers
, il cui documentation dice di installare la libreria
pip install django-cors-headers
e poi aggiungerlo ai tuoi applicazioni installate:
INSTALLED_APPS = ( ... 'corsheaders', ... )
Avrete anche è necessario aggiungere una classe middleware per ascoltare le risposte:
MIDDLEWARE_CLASSES = ( ... 'corsheaders.middleware.CorsMiddleware', 'django.middleware.common.CommonMiddleware', ... )
Si potrebbe anche voler sfogliare la documentazione the configuration section.
È possibile eseguire l'utilizzo di un middleware personalizzato, pur sapendo che l'opzione migliore è l'approccio testato del pacchetto django-cors-headers
. Detto questo, ecco la soluzione:
creare la seguente struttura e file:
- myapp/middleware/__init__.py
from corsMiddleware import corsMiddleware
- myapp/middleware/corsMiddleware.py
class corsMiddleware(object):
def process_response(self, req, resp):
resp["Access-Control-Allow-Origin"] = "*"
return resp
aggiungere settings.py
la linea contrassegnata:
MIDDLEWARE_CLASSES = (
"django.contrib.sessions.middleware.SessionMiddleware",
"django.middleware.common.CommonMiddleware",
"django.middleware.csrf.CsrfViewMiddleware",
# Now we add here our custom middleware
'app_name.middleware.corsMiddleware' <---- this line
)
pip install django-cors-headers
e poi aggiungerlo ai tuoi applicazioni installate:
INSTALLED_APPS = (
...
'corsheaders',
...
)
Sarà inoltre necessario aggiungere una classe middleware per ascoltare le risposte:
MIDDLEWARE_CLASSES = (
...
'corsheaders.middleware.CorsMiddleware',
'django.middleware.common.CommonMiddleware',
...
)
CORS_ORIGIN_ALLOW_ALL = True
CORS_ALLOW_CREDENTIALS = True
CORS_ORIGIN_WHITELIST = (
'localhost:3030',
)
CORS_ORIGIN_REGEX_WHITELIST = (
'localhost:3030',
)
più dettagli : https://github.com/ottoyiu/django-cors-headers/#configuration
leggere la documentazione ufficiale in grado di risolvere quasi tutti i problemi
Nel caso qualcuno è tornare a questa domanda e di decidere di scrivere il proprio middleware, questo è un esempio di codice per il nuovo middleware lo stile di Django -
class CORSMiddleware(object):
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
response = self.get_response(request)
response["Access-Control-Allow-Origin"] = "*"
return response
- 1. Django REST Framework + Django REST Swagger + ImageField
- 2. Validazione su query_params in Django Rest Framework
- 3. Django Rest Framework - Relazioni inverse
- 4. Registrazione utente Django rest framework?
- 5. Campo aggiornamento Django Rest Framework
- 6. Django Rest Framework/Django performance issue
- 7. Django Rest Framework: migliori pratiche?
- 8. Django REST Framework - CurrentUserDefault use
- 9. Django Rest Framework - Come testare ViewSet?
- 10. Django Rest Framework - Paginazione APIView
- 11. DRF: come integrare django-rest-framework-jwt su Djoser
- 12. Come impostare raw_id_fields in django-rest-framework?
- 13. Elenco filtri APicerca in django-rest-framework
- 14. django rest framework - aggiunta a views.obtain_auth_token
- 15. Django Rest Framework carica il file su un metodo
- 16. Plug in django-allauth come endpoint in django-rest-framework
- 17. Più modelli in Django Rest Framework?
- 18. Token Django-rest-framework Autenticazione e disconnessione
- 19. Django Rest Framework 3.1 interruzioni pagination.PaginationSerializer
- 20. Django Rest Framework, CSRF e Vue.js
- 21. camelCase dati POST in Django REST Framework
- 22. django rest framework - using detail_route e detail_list
- 23. django rest framework - logout autenticazione token
- 24. Django REST Framework - Autorizzazioni separate per metodi
- 25. Django Rest Framework Patching dati JSON patching
- 26. Django Rest Framework usando il punto nell'URL
- 27. Autenticazione token del framework Rest di Django
- 28. Relazione impaginata in Django REST Framework?
- 29. Errore di asserzione a: Django-rest-Framework
- 30. Django REST Framework - Serializzazione campi opzionali
Sei conoscere un altro modo per farlo, senza la necessità di installare una nuova dipendenza? Sto cercando di creare una classe middleware ora –
@JulioMarins, perché dovresti scrivere la tua versione quando questa è prontamente disponibile e facilmente installabile, con 12 versioni, 21 contributori, oltre 800 stelle e oltre 100 forchette? – Chris
Hai un punto in effetti, ma poiché l'unica necessità di un semplice CORS è un'intestazione 'Access-Control-Allow-Origin: *' Non vedo perché caricare un'intera cosa, metterò un altro modo per farlo in la tua risposta in modo che entrambi i metodi possano essere disponibili. riferimento: [link (] http: // enable-cors.org/server.html) –