Come viene implementata la politica della stessa origine?

2

Stavo guardando le richieste di un dominio incrociato per un progetto e sono incappato in qualcosa che mi lascia perplesso. Da un sito locale sto sparando una richiesta Ajax ad un altro dominio (con jQuery e vanilla XMLHttpRequest). Certo, la richiesta fallisce e posso solo ottenere un evento fallito, che sembra perfettamente normale alla politica della stessa origine. Ma ho notato in Fiddler che la richiesta è effettivamente fatta e ha successo! Sembra che sia solo per il fatto che non posso elaborare la risposta.

Mi sto perdendo qualcosa o è un buco di sicurezza? Certo, non puoi accedere ai dati, ma a che serve consentire l'invio di dati e solo impedire l'accesso alla risposta?

    
posta Antoine 21.02.2014 - 09:18
fonte

1 risposta

2

Il browser sta facendo una richiesta nel caso in cui ci sia un'intestazione CORS (Cross-Origin Resource Sharing) lì. Osserva da vicino il verbo http: probabilmente sta facendo prima una chiamata OPTIONS al server remoto.

Se esiste un'intestazione CORS, sta verificando se l'intestazione CORS richiede il filtraggio di intestazioni, metodi o parti della risposta.

Se non c'è un'intestazione CORS, quindi getta la risposta sul pavimento e restituisce un errore incomprensibile. Vai browser!

La politica della stessa origine è una funzionalità di sicurezza rigorosamente per il lato client. Effettua ricerche su CORS e puoi ottenere ulteriori informazioni su ciò che comporta.

BTW se stai implementando un qualsiasi schema di autorizzazione, come OAuth, la politica della stessa origine è praticamente ridondante e il tuo servizio può tranquillamente utilizzare CORS per sconfiggerlo. Lo stesso se il servizio serve informazioni "non protette" o "pubbliche" a cui non interessa se esce, o se desideri attivamente che sia accessibile.

    
risposta data 21.02.2014 - 09:28
fonte

Leggi altre domande sui tag