2012-05-10 4 views
24

Mi sto ponendo queste domande perché svilupperemo un'applicazione che dovrebbe condividere dati di origine incrociata tramite javascript. Una possibile soluzione sembra essere che JSONP utilizza tag SCRIPT per estrarre dati da altri domini. Tuttavia, vorrei evitare la situazione in cui implementiamo il nostro fantastico codice supponendo che il tag SCRIPT non sia soggetto a content e che a un certo punto i browser proibiscano questa funzionalità.Perché il tag HTML SCRIPT non è soggetto alla stessa politica di origine

Qualcuno può far luce su quale sia il motivo del tag SCRIPT per consentire richieste cross-domain?

+0

Per lo stesso motivo per cui i tag non sono soggetti ad esso. – Corbin

+0

Quale sarebbe questa ragione e come si applica agli script (eseguibili)? – moritz

+6

Lo stesso criterio di origine è, in un certo senso, il motivo per cui i tag di script verso altri domini sono sicuri. Non includi accidentalmente un tag script nel tuo markup (si spera non lo sia comunque), ma non puoi garantire la sicurezza del codice che includi se non lo controlli. Potresti voler includere alcuni JS in modo che tu possa avere annunci sulla tua pagina, ma non vorrai che quel sito web degli annunci abbia accesso ai cookie di sessione dei tuoi utenti. – Corbin

risposta

2

E 'lo stesso motivo per cui è possibile utilizzare (non leggere, come nel ottenere il file di contenuto) gli script, stili e immagini ospitate da altri domini.


ho letto the spec regerding scripts, e non precisa nulla sul perché. Tutto ciò che dice è:

Se src ha un valore URI, i programmi utente devono ignorare il contenuto dell'elemento e recuperare lo script tramite l'URI.

recuperare [ed eseguire]

+0

Gli stili e le immagini non sono intrinsecamente pericolosi, inoltre: qualsiasi richiesta Ajax non è autorizzata a fare richieste di domini incrociati, perché creare un'eccezione per il tag dello script? Stai suggerendo che sia per ragioni storiche? – moritz

+3

@mosch [Anche le immagini possono essere pericolose] (http://seclists.org/isn/2004/Sep/88) –

+0

Gli stili e le immagini * sono * soggetti alla stessa politica di origine. La proprietà '.cssRules' di un 'CSSStyleSheet' (ad esempio' document.styleSheets [0] 'è' null' per risorse da un'origine diversa.Le immagini non possono essere manipolate su una tela se provengono da un altro dominio. –

3

suppongo this draft dal titolo "Principi del same-origin policy", spiega (seppur brevemente) ciò che è più o meno nella testa di tutti:

In linea di principio, l'utente gli agenti potrebbero trattare ogni URL come un entità separata e isolare ciascun documento da ogni altro URL, a meno che il documento non indichi esplicitamente che si è fidato di quell'URL. Sfortunatamente, questo design è ingombrante per gli sviluppatori perché le applicazioni web spesso consistono in un numero di risorse che agiscono in concerto.

Come approssimazione, gli user-agent raggruppano gli URL insieme in domini di protezione chiamati origini. In particolare, due URL fanno parte della stessa origine (cioè rappresentano lo stesso principale) se hanno lo stesso schema, host e porta.

In breve: sarebbe molto più difficile costruire il Web se tutto fosse soggetto a SOP.

+0

Grazie per la risposta perspicace, questo è anche quello che sembra suggerire il link di GGG (sulle immagini), ma quello che non vedo è perché ho una stessa politica di origine quando ci sono metodi semplici per circoscriverlo? potrei essere certo che tra cinque anni i browser possano ancora rendere possibile JSONP? – moritz

+0

@mosch: JSONP richiede che il client e il server collaborino esplicitamente e che il client si fidi del server, non definirei questo metodo semplice. funziona come un "protocollo" tra client e server di cui l'agente utente non sa nulla. È come chiedere "come posso essere certo che tra cinque anni i browser non si rifiuteranno di caricare fogli di stile dagli URL che contengono' pippo' ". – Jon

-1

Il motivo è dovuto all'eredità. È stato costruito in quel modo molti anni fa e se ora cambia, troppi siti falliranno. Inoltre, le implicazioni sulla sicurezza sono ben note, dal momento che è in circolazione da così tanto tempo.