1

J'ai gaspillé toute la journée sur ce stupide petit numéro! J'utilise django-rest-framework pour mon api et backbone.js dans la partie frontale.Impossible de faire fonctionner CORS avec contenType - Django Rest Framework

Je ne peux pas faire de demande au serveur lors de l'ajout de l'option contentType.

Voici un exemple simple de ce que je suis en train de faire:

$.ajax 
    url:"http://127.0.0.1:8080/foo/" 
    type:"POST" 
    data: '{"e":"e"}' 
    contentType: "application/json" 

Les options échoue et le POST est jamais envoyé.

Les en-têtes de demande d'options:

Access-Control-Request-Headers:accept, origin, content-type 
Access-Control-Request-Method:POST 
Origin:http://localhost:8000 

Maintenant, je ne sais pas pourquoi les options échouent. J'utilise l'application de corsheaders pour django, et les paramètres sont les suivants:

CORS_ORIGIN_ALLOW_ALL = True 
CORS_ALLOW_HEADERS = (
    'x-requested-with', 
    'content-type', 
    'accept', 
    'origin', 
    'authorization' 
) 
+0

Peut-vous partager les OPTIONS têtes de réponse? – monsur

+0

De plus, avez-vous besoin d'un attribut 'CORS_ALLOW_METHODS'? par exemple. CORS_ALLOW_METHODS = ( 'GET', 'POST', 'PUT', 'PATCH', 'SUPPRIMER', 'OPTIONS' ) – monsur

+0

La réponse OPTIONS est complètement vide dans Chrome – Harry

Répondre

3
CORS_ORIGIN_ALLOW_ALL = True 

est suffisant si vous avez la configuration suivante correctement

INSTALLED_APPS = (
    * 
    'corsheaders', 
) 

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