2016-03-03 10 views

Antwort

25

Der Link, den Sie in Ihrer Frage verwiesen empfiehlt django-cors-headers verwenden, deren documentation sagt der Bibliothek

pip install django-cors-headers 

zu installieren und es dann auf Ihre installierten Anwendungen hinzufügen:

INSTALLED_APPS = (
    ... 
    'corsheaders', 
    ... 
) 

Sie werden auch Sie müssen eine Middleware-Klasse hinzufügen, um Antworten zu hören:

MIDDLEWARE_CLASSES = (
    ... 
    'corsheaders.middleware.CorsMiddleware', 
    'django.middleware.common.CommonMiddleware', 
    ... 
) 

Sie möchten vielleicht auch the configuration section seiner Dokumentation durchsuchen.

+0

tun Sie kennen Sie eine andere Möglichkeit, dies zu tun, ohne eine neue Abhängigkeit installieren zu müssen? Ich versuche jetzt eine Middleware-Klasse zu erstellen –

+1

@JulioMarins, warum würden Sie Ihre eigene Version schreiben, wenn diese leicht verfügbar und leicht installierbar ist, mit 12 Veröffentlichungen, 21 Mitwirkenden, über 800 Sternen und über 100 Gabeln? – Chris

+0

Sie haben einen Punkt in der Tat, aber da die einzige Notwendigkeit für eine einfache CORS ist eine Kopfzeile Access-Control-Allow-Origin: * 'Ich sehe nicht, warum eine ganze Sache zu laden, werde ich einen anderen Weg, dies zu tun Ihre Antwort, damit beide Methoden zur Verfügung stehen. Referenz: [Link (] http: // Aktivieren-Kors.org/server.html) –

5

Sie können dies tun, indem Sie eine benutzerdefinierte Middleware verwenden, obwohl Sie wissen, dass die beste Option die getestete Methode des Pakets django-cors-headers ist. Mit dieser sagte, hier ist die Lösung:

erstellen Sie die folgende Struktur und Dateien:

- 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 

hinzufügen settings.py die markierte Zeile:

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 

und fügen Sie es dann auf Ihre installierten Anwendungen:

INSTALLED_APPS = (
    ... 
    'corsheaders', 
    ... 
) 

Sie werden auch eine Middleware-Klasse hinzufügen müssen auf Antworten hören in:

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', 
) 

mehr Details : https://github.com/ottoyiu/django-cors-headers/#configuration

lesen die offizielle Dokumentation lösen können fast alle Problem

3

Falls jemand auf diese Frage und die Entscheidung immer wieder ihre eigene Middleware zu schreiben, dies ist ein Codebeispiel für Djangos neue Art Middleware -

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 
Verwandte Themen