it-swarm.com.de

Ressourcenübergreifende Ressourcenfreigabe mit Anmeldeinformationen

Ich habe ein gemeinsames Authentifizierungsformular für mehrere Subdomains (beispiel.com, blog.example.com und app.example.com). Das Anmeldeformular muss diese Daten an example.com senden, unabhängig davon, wo sie angezeigt werden. Daher habe ich daran gedacht, CORS zu verwenden.

header("Access-Control-Allow-Origin: http://example.com http://blog.example.com http://app.example.com")

funktioniert nicht

Also dachte ich daran, das Nächste zu tun und den Origin-Header manuell auf Serverseite zu überprüfen und einen Access-Control-Allow-Origin: * zuzulassen, so dass Anforderungen gestellt werden könnten, aber leider taucht dies im MDN auf.

Wichtiger Hinweis: Bei der Beantwortung einer Anfrage mit Berechtigungsnachweis muss der Server eine Domäne angeben und darf kein Platzhalterzeichen verwenden. 

Gibt es eine Möglichkeit, meine Anfrage in mehreren Domänen zum Laufen zu bringen und trotzdem mithilfe von CORS Anmeldeinformationen zu senden?

27
Nemo

Zwei Gedanken:

1) Fügen Sie auch den Header "Access-Control-Allow-Credentials: true" hinzu? Dies ist zum Übergeben von Cookie-Anmeldeinformationen erforderlich (und der entsprechende XHR-Client muss .withCredentials = true festlegen)

2) Haben Sie den Vorschlag aus Ihrem Link ausprobiert und nur den Ursprung für die aktuelle Anfrage angegeben. Wenn beispielsweise eine Anfrage mit dem Header "Origin: http://blog.example.com " eingeht, würden Sie mit "Access-Control-Allow-Origin: http: // blog" antworten. example.com "und keine Ursprungsliste. Dies erfordert etwas mehr Arbeit bei der serverseitigen Implementierung.

3) Ein weiterer Gedanke, Sie erwähnen, dass Sie ein einziges Anmeldeformular haben, das von verschiedenen Domänen gemeinsam genutzt werden muss. Wenn es sich um ein Standard-HTML-Formular handelt, können Sie einen regulären Post-Post-Vorgang über Domänen hinweg ausführen. Sie brauchen kein CORS. Setzen Sie einfach die "action" -Eigenschaft des Formulars auf die URL, die Sie posten möchten. Zum Beispiel:

<form name="login" action="http://login.example.com/doLogin">
40
monsur
// cross domain
header("Access-Control-Allow-Origin: ".$_SERVER['HTTP_Origin']);
header('Access-Control-Allow-Credentials: true');
1
user3986068