Perché il metodo .ajax() di jQuery non invia il mio cookie di sessione?

2022-05-31 23:30:25

Dopo aver effettuato l'accesso tramite $.ajax() a un sito, provo a inviare una seconda $.ajax() richiesta a quel sito, ma quando controllo le intestazioni inviate utilizzando FireBug, nella richiesta non viene incluso alcun cookie di sessione.

Cosa sbaglio?

- user345625

Source
Risposta


369
  • Le chiamate AJAX inviano cookie solo se l'URL che stai chiamando è sullo stesso dominio del tuo script di chiamata.

    Questo potrebbe essere un problema interdominio.

    Forse hai provato a chiamare un URL da www.domain-a.com mentre lo script di chiamata era su www.domain-b.com (In altre parole: hai effettuato una chiamata interdominio in cui nel caso in cui il browser non invii alcun cookie per proteggere la tua privacy).

    In questo caso le tue opzioni sono:

    • Scrivi un piccolo proxy che risiede sul dominio-b e inoltra le tue richieste al dominio-a. Il tuo browser ti consentirà di chiamare il proxy perché si trova sullo stesso server dello script chiamante.
      Questo proxy può quindi essere configurato da te per accettare un nome cookie e un parametro di valore che può inviare al dominio-a. Ma affinché funzioni, devi conoscere il nome del cookie e il valore del tuo server sul dominio: a vuole l'autenticazione.
    • Se stai recuperando oggetti JSON, prova invece a utilizzare una richiesta JSONP. jQuery li supporta. Ma devi modificare il tuo servizio sul dominio-a in modo che restituisca una risposta JSONP valida.

    Sono felice che sia stato di aiuto anche solo un po'.