therefore origin not has control been allowed allow python ajax django cordova cors

python - origin - has been blocked by cors policy django



Access-Control-Allow-Origin en la aplicaciĆ³n Django cuando se accede con Phonegap (2)

Estoy desarrollando una aplicación Phonegap para mi aplicación basada en Django, pero cuando intento hacer llamadas Ajax recibo este error:

XMLHttpRequest cannot load http://domain.herokuapp.com/getcsrf/?tags=jquery%2Cjavascript&tagmode=any&format=json. No ''Access-Control-Allow-Origin'' header is present on the requested resource. Origin ''null'' is therefore not allowed access.

¿Cómo puedo hacerlo para que mi aplicación Django permita el origen cruzado para algunas URL?

Aquí está mi código Ajax:

get: function() { $.getJSON("http://domain.herokuapp.com/getcsrf/", { tags: "jquery,javascript", tagmode: "any", format: "json" }, function(data) { $.each(data.items, function(item){ console.log(item); }); }); }


Django de forma predeterminada no proporciona los encabezados necesarios para proporcionar origen cruzado. La manera más fácil sería simplemente usar esta aplicación Django que lo maneja: https://github.com/ottoyiu/django-cors-headers

A continuación, puede establecer los dominios que desee en blanco con la configuración

CORS_ORIGIN_WHITELIST = ( ''google.com'', ''hostname.example.com'' )

para admitir todo, solo use la configuración ... CORS_ORIGIN_ALLOW_ALL = True y luego realice cualquier filtrado de la solicitud en el middleware o en la vista.


Para vistas individuales agrega manualmente encabezados:

@require_GET def api_getto(request): response = JsonResponse( # your stuff here ) response["Access-Control-Allow-Origin"] = "*" response["Access-Control-Allow-Methods"] = "GET, OPTIONS" response["Access-Control-Max-Age"] = "1000" response["Access-Control-Allow-Headers"] = "X-Requested-With, Content-Type" return response