jQuery withCredentials funktioniert nicht in Safari?

8

Ich versuche, jQuery.ajax () withCredentials: true cross-domain zu verwenden, aber es funktioniert aus irgendeinem Grund nicht in Safari.

Es funktioniert in Firefox, Chrome und IE (mit P3P-Header), aber in Safari wird es nicht authentifizieren.

Mein Code ist ziemlich einfach:

%Vor%

Irgendwelche Ideen? Gibt es etwas Spezifisches, das ich für die Server-Seite tun muss, damit Safari die Cookies akzeptiert?

BEARBEITEN: Es funktioniert, sobald ich "Cookies und andere Websitedaten blockieren" auf "Nie" geändert habe, aber das ist offensichtlich keine Lösung für eine öffentlich zugängliche Website.

Safari berücksichtigt die vom Server gesendeten Cookies nicht. Hier sind meine Header (nur relevante Header angezeigt), achten Sie auf die zwei verschiedenen Domänen:

%Vor%

Gibt es einen CORS-Header, der fehlt und der nur von Safari benötigt wird?

    
Owen Davey 12.08.2014, 23:13
quelle

1 Antwort

3

Es tut mir leid zu sagen, aber es gibt keine sehr elegante Lösung für dieses Problem. Apple hat kürzlich eine strenge Richtlinie zur Verhinderung von Cookies von Drittanbietern - Link

erlassen
  

Das bedeutet, dass Benutzer nur langfristige persistente Cookies und Websitedaten von den Websites haben, mit denen sie tatsächlich interagieren, und das Tracking von Daten wird proaktiv während des Surfens im Web entfernt.

Die beste Lösung, die ich mir vorstellen kann, ist, den Benutzer auf eine Login-Seite umzuleiten, die in der 3rd-Party-Domain gehostet wird und dann nach der Anmeldung wieder auf die ursprüngliche Seite zurückkehrt. Auf diese Weise wird der Cookie gespeichert (da der Benutzer direkt mit seiner Domain interagiert hat), und Sie könnten auch mit ihm als Drittanbieter-Cookie von der ursprünglichen Domain interagieren.

    
Ido.Co 01.12.2017 00:57
quelle