2010-11-18 10 views
5

ho bisogno di un cookie di autenticazione HttpOnly di lavorare su:multi-sub-dominio e problemi ajax

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

in modo che possa essere registrato in tutti e tre i luoghi tramite un unico login.

Questo funziona bene, impostando il mio dominio cookie:

.mydomain.com 

Ecco l'intestazione di risposta che imposta il cookie:

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

Tutto questo funziona bene per le normali richieste del browser.

Tuttavia, ho bisogno di effettuare una richiesta AJAX da mydomain.com e www.mydomain.com a abc.mydomain.com.

Quando faccio la richiesta, non passa il cookie di autenticazione. Perché è questo e cosa posso fare al riguardo?

Se faccio una richiesta allo stesso host come pagina JS risiede, non inviare il cookie: s

Ecco il mio codice di richiesta:

$.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'); 
    } 
}); 

E 'questa una politica di dominio di croce ? Perché il dominio dei cookie non fa funzionare questo?

Grazie

risposta

1

Secondo la same origin policy, sottodomini sono infatti "ostili" al tuo dominio di primo, ma può essere risolto impostando document.domain (stesso articolo).

+0

Se si imposta document.domain su "foo.com" nell'URL http://one.foo.com/, come fa il server a conoscere l'impostazione document.domain su http://two.foo.com/ prima rende la richiesta a "due"? –

+0

In che modo le richieste CORS con le intestazioni di controllo dell'accesso influenzano questa situazione? – Mnebuerquo