Update: Rewrite der Frage, da ich einige neue Informationen habe. Der Verlauf ist in den Änderungen sichtbar.CORS schlägt auf Anfrage mit OPTIONS fehl (Antwort mit Status: 0)
Ausgabe Einführung
Ich habe eine django-rest-framework
Anwendung api.nrzonline.nl
auf eine Sub-Domain läuft. Das Frontend ng2 + webpack
Anwendung läuft auf der Domäne selbst nrzonline.nl
. Wenn eine Anfrage mit ng2-restangular
an die API senden, habe ich die folgenden Fehler in meiner Konsole erhalten:
zone.js OPTIONS http://api.nrzonline.com/project/ net::ERR_EMPTY_RESPONSE
EXCEPTION: Response with status: 0 for URL: null
die aktuelle Ausgabe
Nach einigen Tests mit Locken, fand ich, dass alle Anforderungen fehlschlagen, wenn der Preflight Anfrage mit OPTIONS
ist senden.
Anfrage mit -X GET
funktioniert:
curl 'api.nrzonline.nl/skill/' -X GET
[{"id":1,"category":{"id":1,"title":"skill-a",...}]
(Preflight) Anfrage mit -X OPTIONS
nicht ohne Antwort
curl 'api.nrzonline.nl/skill/' -X OPTIONS
curl: (52) Empty reply from server
Durchführen dieser -x OPTIONS
Anfrage auf die API auf dem Server Django Entwicklung lokal funktioniert ohne Probleme.
Servereinstellungen
CORS_ORIGIN_ALLOW_ALL = True
CORS_ALLOW_METHODS
ist auf Standard, dieCORS_ALLOW_HEADERS
OPTIONS
- können auf Standard-
Middleware ist:
MIDDLEWARE = [
...
'corsheaders.middleware.CorsMiddleware',
'django.middleware.common.CommonMiddleware',
...
]
Was ich versucht habe
- Ich habe gelesen, dass es möglich ist, dass der Server HTTPS-Anforderung erfordert, aber derzeit gibt es keine SSL-Zertifikat aktiv. (source) Obwohl, habe ich zu
curl
versuchen mit--insecure
(source) - Senden der Anfrage als
text/plain
stattapplication/json
mit-H "Content-Type: text/plain"
(source (comment on answer))
Die Frage
Was mir fehlt/falsch machen , so dass der Preflight mit -X OPTIONS
fehlschlägt. Irgendwelche Tipps, Erklärungen oder Hinweise auf eine mögliche Lösung sind willkommen.