2016-03-03 12 views

risposta

25

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.

+0

Sei conoscere un altro modo per farlo, senza la necessità di installare una nuova dipendenza? Sto cercando di creare una classe middleware ora –

+1

@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

+0

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) –

5

È 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 
) 
1
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

3

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 
Problemi correlati