Winkel: Ein Platzhalter '*' kann nicht verwendet werden, in der "Access-Control-Allow-Origin' - header, wenn die credentials-flag true ist
Ich weiß, es gibt eine Menge von Fragen zu CORS schon, aber Sie nicht scheinen, um meine Frage zu beantworten.
Also ich habe eine client-Anwendung geschrieben, in Winkel, die verwendet werden zum erstellen einer mobilen app mit Apache Cordova). Die html-Dateien und JavaScript-Dateien geladen werden, die vom mobilen Gerät.
Wenn ich simulieren, und ich senden Sie Anfragen an die REST-API-server habe ich zum ersten mal
"Nein" Access-Control-Allow-Origin' - header vorhanden ist, auf die angeforderte Ressource. Herkunft 'http://localhost:82
' ist daher nicht erlaubt Zugriff".
Also ich habe header("Access-Control-Allow-Origin: *"); in meinem php-REST-API-Server. Ich kann nicht angeben, eine bestimmte Domäne, wie die Anfragen kommen von mobilen Geräten.
Jetzt habe ich "Einen Platzhalter '*' kann nicht verwendet werden, in der "Access-Control-Allow-Origin' - header, wenn die credentials-flag wahr ist."
Habe ich endlich eine Lösung gefunden, aber ich bin nicht sicher, es ist sicher zu halten Sie es wie dieses.
In meinem php-REST-API-Server habe ich aufgenommen:
if (isset($_SERVER['HTTP_ORIGIN'])) {
header("Access-Control-Allow-Credentials: true");
header("Access-Control-Allow-Origin: " . $_SERVER['HTTP_ORIGIN']);
header("Access-Control-Allow-Headers: *, X-Requested-With, Content-Type");
header("Access-Control-Allow-Methods: GET, POST, DELETE, PUT");
}
Bitte teilen Sie auf diese Weise zu arbeiten. Wenn es nicht sicher ist, oder nicht gut überhaupt, können Sie mir bitte sagen, wie dieses Problem zu lösen?
Vielen Dank!
- Sind Sie sicher, dass Sie benötigen, um Access-Control-Allow-Credentials: true, mehr Infos über diesen header: stackoverflow.com/a/24689738/1956540
- Nicht sicher, ob Sie wissen oder nicht, aber "credentials-flag ist wahr" bezieht sich nicht auf eine
Access-Control-Allow-Credentials: true
- header die Antwort-es bezieht sich aufrequest.withCredentials = true
. (stackoverflow.com/questions/34078676/...)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Antwort sollten nur die angenommen überschriften in der Access-Control-Allow-Header, nicht die wildcard.
Soweit es als sicher, beachten Sie den Kommentar von @Jules in diesem post über CORS:
Siehe auch die folgenden Beispiele:
Wildcard nicht akzeptiert Access-Control-Allow-Header
Geben Sie Header Access-Control-Allow-Header
Alternativer Ansatz
Können Sie einfach legen Sie die origin-header:
Wenn Sie nicht brauchen, um cookies in Ihrem Antrag entfernen:
Entfernen Sie die wildcard von Access-Control-Allow-Header und Beurteilung Genehmigung und dann passieren, dass header, die als Teil Ihrer Anfrage für die Autorisierung, anstelle der übergabe von Anmeldeinformationen in einem cookie, ex:
Fügen Sie außerdem die OPTIONEN an, die erlaubten Methoden.