2010-11-18 4 views
5

je besoin d'un cookie d'authentification HttpOnly pour travailler sur:les cookies multi-sous-domaine et les problèmes de ajax

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

pour que je puisse être connecté à trois endroits via une seule connexion.

Cela fonctionne très bien, en réglant mon domaine de cookie:

.mydomain.com 

est ici l'en-tête de réponse qui définit le cookie:

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

Tout cela fonctionne très bien pour les demandes de navigateur normales. Cependant, j'ai besoin de faire une demande AJAX de mydomain.com et www.mydomain.com à abc.mydomain.com.

Lorsque je fais la demande, il ne passe pas le cookie d'authentification. Pourquoi est-ce, et que puis-je faire à ce sujet?

Si je fais une demande au même hôte que la page JS se trouve sur, il n'envoie le cookie: s

Voici mon code de demande:

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

Est-ce une politique inter-domaine ? Pourquoi le domaine des cookies ne fait-il pas ce travail?

Merci

Répondre

1

Selon le same origin policy, les sous-domaines sont en effet « hostile » à votre domaine de premier, mais il peut être fixé en réglant document.domain (même article).

+0

Si vous définissez document.domain sur 'foo.com' sur l'URL http://one.foo.com/, comment le serveur connaît-il le paramètre document.domain sur http://two.foo.com/ avant il fait la demande à «deux»? –

+0

Comment la création de requêtes CORS avec des en-têtes de contrôle d'accès affecterait-elle cette situation? – Mnebuerquo