J'ai effectué des recherches et lu plusieurs articles de Stackoverflow sur le même sujet. Aucun n'a résolu mon problème.
Mon problème est que je reçois le message d'erreur "... aucun en-tête" ... n'est présent sur la ressource demandée ... "dans ma console.
J'utilise:
Version Chrome 57.0.2987.133 Firefox Version 52.0.2
Python 2.7 Django 1.11a1
AngularJS
J'utilise MAMP pour servir mes éléments frontaux Angular et le serveur Django pour les éléments dorsaux.
Dans mes paramètres Django, j'ai inclus le middleware cors et essayé à la fois la liste blanche et la définition de tous les éléments comme étant vrais:
MIDDLEWARE = [
'Django.middleware.security.SecurityMiddleware',
'Django.contrib.sessions.middleware.SessionMiddleware',
'corsheaders.middleware.CorsMiddleware',
'Django.middleware.common.CommonMiddleware',
'Django.middleware.csrf.CsrfViewMiddleware',
'Django.contrib.auth.middleware.AuthenticationMiddleware',
'Django.contrib.messages.middleware.MessageMiddleware',
'Django.middleware.clickjacking.XFrameOptionsMiddleware',
]
CORS_Origin_ALLOW_ALL = True
J'ai toujours cette erreur sur google chrome:
localhost /: 1 XMLHttpRequest ne peut pas charger {mon URL de noeud final}. Réorienter de {mon URL de noeud final} à {mon URL de noeud final avec a} a été bloqué par stratégie CORS: Aucun en-tête 'Access-Control-Allow-Origin' n'est présent sur la ressource demandée. Origin {request url} n'est donc pas accès autorisé.
Cela fonctionne correctement sur Firefox, et je ne comprends pas pourquoi cela ne fonctionne pas pour Google Chrome. Je n'ai pas essayé d'autres types de navigateurs. Toute aide sera très appréciée, merci.
Installez le paquet cors-headers avec
pip install Django-cors-headers
Ajoute à vos applications installées
INSTALLED_APPS = (
...
'corsheaders',
...
)
Ajoutez votre MIDDLEWARE n'oubliez pas d'ajouter comme étant le premier de la liste
MIDDLEWARE = [
'corsheaders.middleware.CorsMiddleware',
'Django.middleware.common.CommonMiddleware',
...
]
Avant que les applications installées mettent cette configuration à la disposition de tous
CORS_Origin_ALLOW_ALL=True
Ou créez une liste de hits
CORS_Origin_WHITELIST = (
'google.com',
'hostname.example.com',
'localhost:8000',
'127.0.0.1:9000'
)
Vérifiez d'abord votre url de requête. J'ai eu ce problème lors de l'utilisation de vue-resource.
la raison qui est chrome parcourir; vous pouvez installer l'application CORS Toggle en chrome ou déployer votre code Web sur nginx ou Apache, puis en utilisant chrome.
Peut-être avez-vous besoin de regarder comment vous appelez vos middlewares. S'ils ne sont pas dans le bon ordre, ils risquent de générer cette erreur. Il semble que votre 'Django.middleware.security.SecurityMiddleware'
doive être placé sous le 'corsheaders.middleware.CorsMiddleware'
..__ et que vous deviez peut-être aussi ajouter
CORS_ALLOW_CREDENTIALS = True
dans votre code.
J'espère que cela t'aides.