Cela me tourmente depuis un certain temps maintenant. J'ai mis en place un jeu de base d'API dans Django et je construis un frontal basé sur angularJS. Cependant, pour une raison étrange, le code suivant entraîne une erreur CORS.angularjs ne POST pas à mon django basé apis - donnant erreur CORS
var req = {
method: 'POST',
url: url,
headers: {'Content-Type': 'application/x-www-form-urlencoded'},
withCredentials: true,
param: data,
data: data
}
return $http(req).then(
function(response){
callbackSuccess(response);
},
function(response){
callbackError(response);
}
);
j'ai découvert deux choses que quand je fais un poste une demande OPTIONS est faite et d'autre part, rien de ce que je poste est encore affichée. J'essaie de mettre le contenu request.POST et son vide.
Internal Server Error: /api/users/auth/
Traceback (most recent call last):
File "/home/ali/eb-virt/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 149, in get_response
response = self.process_exception_by_middleware(e, request)
File "/home/ali/eb-virt/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 147, in get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/ali/eb-virt/local/lib/python2.7/site-packages/django/views/decorators/csrf.py", line 58, in wrapped_view
return view_func(*args, **kwargs)
File "/home/ali/eb-virt/local/lib/python2.7/site-packages/django/utils/decorators.py", line 149, in _wrapped_view
response = view_func(request, *args, **kwargs)
File "/home/ali/Projects/api.project.local/project/api/views.py", line 50, in loginUser
emailAddress = request.POST["emailAddress"]
File "/home/ali/eb-virt/local/lib/python2.7/site-packages/django/utils/datastructures.py", line 85, in __getitem__
raise MultiValueDictKeyError(repr(key))
MultiValueDictKeyError: "'emailAddress'"
[21/Nov/2016 07:56:59] "OPTIONS /api/users/auth/ HTTP/1.1" 500 81083
Et voici mon code serveur:
def loginUser(request):
emailAddress = ''
password = ''
emailAddress = request.POST["emailAddress"]
password = request.POST["password"]
data = auth.login(emailAddress, password)
return data
J'ai installé le django-cors-headers et suivi toutes les instructions au noyau, mais sa ne fonctionne toujours pas ...
postez votre code serveur. vous acceptez la méthode 'OPTION' dans la vue. ' – itzMEonTV
J'ai ajouté le code du serveur - je vérifie POST - comment puis-je accepter la méthode OPTION? faire un pp.pprint de la request.POST sort un objet dict vide – Ali
Vous devez dire à votre serveur quelles requêtes accepter (POST, GET ...) et aussi de qui il peut accepter. Ce sont 2 en-têtes que vous devez définir. Les avez-vous mis en place? – trichetriche