Desarrollé el proyecto Django y lo implementé en los servicios EC2 de nivel gratuito de Amazon. Todo está bien, excepto el mensaje de error que no regresa. Estoy usando el proyecto en modo de producción.
Explicación de la imagen de arriba [Registro de consola]:
Solicitud y respuesta exitosas: se realizó para una URL existente
La segunda solicitud se realiza intencionalmente a una URL no existente y no recibió ninguna respuesta.
Quiero obtener al menos una respuesta 404, el problema que tengo es que no tengo ninguna respuesta del servidor. Cuando lo ejecuto en el servidor, vi que está registrando los resultados en el servidor.
Pregunta: Cómo devolver la respuesta que genera Django cuando algo está mal. Información adicional: esos mensajes de error y la respuesta se generan en la plantilla integrada djangorestframework's .
Detalles adicionales:
Avísame si me falta algo.
El cerebro hace cosas realmente interesantes cuando está cansado. Gracias a @iklinac. Tenía razón, mejor hubiera usado django-cors-headers correctamente. Ya estaba instalado y funcionando en heroku, cuando me mudé a amazon aws pensé que algo estaba relacionado con NGINX.
Notas para tomar.
pip install django-cors-encabezados
Asegúrate de que esté en tus aplicaciones instaladas.
INSTALLED_APPS = [ ... 'corsheaders', ... ] MIDDLEWARE = [ # Or MIDDLEWARE_CLASSES on Django < 1.10 ... 'corsheaders.middleware.CorsMiddleware', 'django.middleware.common.CommonMiddleware', ... ] CORS_ORIGIN_WHITELIST = [ "https://example.com", "https://sub.example.com", "http://localhost:8080", "http://127.0.0.1:9000" ]Luego, hay algunas otras cosas que puede modificar y usar como desee.
Eventualmente he cambiado mi nginx.conf a siguiente
upstream hello_django { server web:8000; } server { listen 80; location / { proxy_pass http://hello_django; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; proxy_redirect off; } location /staticfiles/ { alias /home/app/web/staticfiles/; } location /mediafiles/ { alias /home/app/web/mediafiles/; } }Feliz codificación.) créditos a testdriven.io y django-cors-headers
Está pasando solicitudes de proxy y no obtienen add_header correctamente, debe pasar el proxy después de agregar encabezados
location / { add_header 'Access-Control-Allow-Origin' '*'; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PATCH, PUT, DELETE'; add_header 'Access-Control-Allow-Credentials' 'true'; add_header 'Access-Control-Allow-Headers' 'Authorization,Accept,Origin,DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range'; if ($request_method = 'OPTIONS') { add_header 'Access-Control-Allow-Origin' '*'; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PATCH, PUT, DELETE'; # # Custom headers and headers various browsers *should* be OK with but aren't # add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range, Authorization'; # # Tell client that this pre-flight info is valid for 20 days # add_header 'Access-Control-Max-Age' 1728000; add_header 'Content-Type' 'text/plain; charset=utf-8'; add_header 'Content-Length' 0; return 204; } proxy_pass http://app; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; proxy_redirect off;La otra forma sería agregar django-cors-headers en su aplicación