2013-04-02 10 views
8

Ho due applicazioni sui domini successivi: www.bar.com e www.foo.bar.com. Seconda applicazione rende autorizzazione via prima applicazione (con richiesta di dominio croce) Dopo questo I fissa i cookie al browser, e in Internet Explorer che non funziona:Internet Explorer imposta i cookie interdominio per l'autorizzazione

$.cookie("SESSION_KEY", loginResult.sessionKey, { 
     expires: 365, 
     path: "/", 
     domain: ".bar.com" 
}); 

Il codice funziona in tutti i browser Internet Explorer v excepti .9 Il cookie non viene impostato. Come posso ripararlo?

risposta

1

Ciò è dovuto alle impostazioni di IE. Dal menu Tools, selezionare Internet Options. Passare alla scheda Security. Selezionare l'area del contenuto Web Internet e fare clic su Custom Level per aprire le Impostazioni di sicurezza.

Individuare le impostazioni Miscellaneous. Prova ad abilitare Access data sources across domains. Potrebbe essere necessario riavviare IE affinché le impostazioni abbiano effetto.

+8

Ma è un'applicazione web. Non posso dire a tutti gli utenti di farlo nel loro browser. :) – Andrew

2

IE, come solo un browser web sul mercato, implementa, parzialmente standart P3P (che è di circa cookie di accettazione in CORS)

Così si può impostare i cookie utilizzando risposta del server - per fare questo è necessario impostare questa intestazione in risposta del server (che ha fissato i cookie) (I copia-incolla sotto la linea dal mio progetto symfony PHP):

$response->headers->set('P3P', 'CP="random_text"'); 

Si deve anche ricordare a proposito aggiungere flag 'withCredentials = true' alla richiesta CORS (in altro caso, qualsiasi i cookie verranno inviati/salvati dalla richiesta/risposta).