Der folgende Code (mit dem PouchDB Authentication-Plugin) schlägt fehl, weil der Browser eine CORS-Preflight-Anforderung sendet und CouchDB die HTTP-Methode OPTIONS
nicht unterstützt.PouchDB-Authentifizierung löst CORS-Preflight-Anfrage aus
var db = new PouchDB("http://localhost:5984/mydb");
db.login('username', 'password');
// assume the database URL and login info are valid
Hier ist der Fehler (in Chrome). Beachten Sie, dass dieses Problem auch in Edge, aber nicht in Firefox auftritt:
XMLHttpRequest kann http://localhost:5984/_session nicht laden. Antwort für Preflight hat ungültige HTTP-Statuscode 405
Und hier sind die Header, die Chrome ist für die Anfrage zu senden (sie sind nicht signifikant verschieden in Firefox):
POST /_session HTTP/1.1
Host: localhost:8080
Connection: keep-alive
Content-Length: 25
Accept: application/json
Origin: http://localhost:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36
Content-Type: application/x-www-form-urlencoded
Referer: http://localhost:8080/
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.8,es-419;q=0.6,es;q=0.4
Ich habe bereits CORS aktiviert über das add-cors-to-couchdb
Knoten-Skript. Dinge, die ich habe versucht:
- manuell
OPTIONS
als Methode unter[cors]
in meinem local.ini - Passing
{ ajax: { content_type: "text/plain" } }
als drittes Argument anlogin
So hinzufügen, meine Frage ist:
- Wie kann ich verhindern, dass die Preflight-Anfrage ausgelöst wird? Mit Blick auf die MDN documentation scheint es nicht notwendig.
- Wenn das vorherige nicht möglich ist, wie kann ich meinen CouchDB Server so einstellen, dass er auf Preflight-Anfragen reagiert?
Danke für die Anregung. Leider, als ich versuchte, den Ursprung wie beschrieben zu spezifizieren, war das Ergebnis dasselbe wie vorher (gleicher Fehler, keine Authentifizierung). Danke auch für den Link, die Informationen sind sehr hilfreich! – rvighne