6

Sto cercando di capire perché Chrome (26.0.1410.64) e IE10 non sembrano riconoscere il cookie impostato nella mia risposta da un controller API Web ASP.NET. Ecco la situazione:Risposta Il cookie non viene impostato da Chrome e IE

Ho un modulo di accesso del menu a discesa sulla mia pagina che effettua una chiamata ajax al mio metodo API Web (tramite HTTP POST) e che il metodo API Web restituisce alcuni dati JSON e imposta anche un cookie nella risposta (usando le intestazioni HTTP). Funziona perfettamente in Firefox e Safari (quindi, WebKit) ma non in Chrome o IE. Chrome e IE sembrano ignorare completamente il cookie che è stato rinviato nella risposta. Ho verificato (usando Fiddler) che il cookie viene rispedito sulla risposta, quindi so che è lì - Non riesco a capire perché IE10 e Chrome non lo raccolgono però.

Qualche idea? Ha qualcosa a che fare con come Chrome e IE10 gestiscono i cookie di risposta nelle richieste Ajax?

risposta

17

Quindi ho capito il problema, anche se non è qualcosa che vorrei davvero accettare come soluzione. Immagino che dovrò solo averne a che fare e testare sempre il sito sul mio computer locale usando Firefox.

Quindi, ecco il problema:

Quando eseguo il mio sito in locale eseguendo da Visual Studio e IIS sulla mia macchina locale, si crea un sito web a un indirizzo come http://localhost:1839/. Per qualche motivo, i cookie ajax vengono ignorati da IE10 e Chrome quando si tratta di "localhost", ma non quando si tratta di un nome host o di un indirizzo IP reali. Quindi, se modifico il mio file host e creo una voce generica come localhost.com e la puntiamo su 127.0.0.1:1839, allora tutto funziona perfettamente in IE e Chrome (e anche in Firefox).

È quando uso l'indirizzo localhost:1839 che il cookie ajax funziona solo in Firefox.

Quindi quello che ho fatto è stato distribuire il mio sito Web su un server IIS di test diverso (su un'altra macchina) che ho una voce test.mydomain.com nel mio file host locale per - che punta al test dell'IP del server IIS indirizzo. Ora IE, Chrome e Firefox accettano tutti il ​​cookie ajax da questo dominio "test.mydomain.com" simulato.

Quindi, per quelli di voi che inviano i cookie su una richiesta Ajax - fate attenzione a questo problema "localhost" con Chrome e IE.

+1

Ho lo stesso problema con Chrome v40. Questo è davvero fastidioso. Vedi qui: http://i.imgur.com/q7lkXBz.gif – Gaui

+1

Sì, sembra ancora che Firefox sia l'unico browser che accetterà e memorizzerà i cookie localhost, motivo per cui lo utilizzo per lo sviluppo di qualsiasi cosa che coinvolga richieste e cookie ajax. – jamauss

+0

Sono riuscito a [risolvere questo] (http://stackoverflow.com/questions/28583729/localhost-cookies-not-set/28594724) con XMLHttpRequests – Gaui

2

Il dominio sul cookie impostato è molto probabilmente in conflitto con l'utilizzo di localhost. Se si modifica il file hosts e aggiungere un alias farà punto test.mydomain.com al computer locale:

  • all'interno di C: \ Windows \ System32 \ drivers \ etc \ hosts aggiungere il seguente:
    • 127.0.0.1 test.mydomain.com
  • Avviare il server web all'interno di Visual Studio
  • Chiudi tutti i browser, quindi caricare test.mydomain.com
+0

Questo trucco merita di essere compreso e implementato per tutti i siti che eseguono su un host locale Ambiente Windows Ti farà risparmiare un sacco di mal di testa. – fergal303

1

Questo mi ha fatto impazzire per un'ora finché non ho trovato questa risposta. Stavo testando un server basato su Tornado che implementava la callback dell'autenticazione post Auth0. Il server ha utilizzato HTTPRequest.set_secure_cookie() che è stato ignorato da Chrome. L'uso di Firefox ha eliminato il problema, così come i test su Chrome su un desktop diverso.

Problemi correlati