2010-11-18 5 views
5

Ich brauche eine HttpOnly Authentifizierungscookie zu arbeiten:Multi-Sub-Domain Cookies und Ajax Probleme

mydomain.com 
www.mydomain.com 
abc.mydomain.com 

so, dass ich in allen drei Orten über ein einziges Login angemeldet werden kann.

Dies funktioniert gut, durch meine Cookie-Domain zu setzen:

.mydomain.com 

hier ist die Antwort-Header, die das Cookie setzt:

MYAUTHCOOKIE=FOO; domain=.mydomain.com; path=/; HttpOnly 

Dies alles für normale Browser-Anfragen gut funktioniert.

Allerdings muss ich eine AJAX-Anfrage von mydomain.com und www.mydomain.com bis abc.mydomain.com machen.

Wenn ich die Anfrage mache, wird der Authentifizierungscookie nicht übergeben. Warum ist das und was kann ich dagegen tun?

Wenn ich eine Anfrage an den gleichen Host wie die Seite machen die JS auf residiert, ist es das Cookie senden: s

Hier ist mein Anforderungscode:

$.ajax({ 
    type: "POST" 
    , data: { data: { foo: bar} } 
    , dataType: "json" 
    , url: "http://abc.mydomain.com/foo" 
    , timeout: 5000 
    , success: function (data, textStatus) { 
     alert('woo!'); 
    } 
    , error: function (xhr, textStatus, error) { 
     alert('meh'); 
    } 
}); 

Ist das eine Cross-Domain-Politik ? Warum funktioniert die Cookie-Domain nicht?

Dank

Antwort

1

Nach dem same origin policy sind Subdomains in der Tat „feindlich“, um Ihre Top-Domäne, aber es kann durch Einstellung document.domain (gleicher Artikel) fixiert werden.

+0

Wenn Sie document.domain auf der URL http://one.foo.com/ auf "foo.com" setzen, weiß der Server die document.domain-Einstellung unter http://two.foo.com/ vorher es macht die Anfrage an "zwei"? –

+0

Wie wirkt sich dies auf CORS-Anforderungen mit Zugriffssteuerungsheadern aus? – Mnebuerquo