2010-03-30 3 views
19

Come si applica la stessa politica di origine ai seguenti due domini?JavaScript stesso criterio di origine: come si applica a diversi sottodomini?

http://server1.MyDomain.com

http://server2.MyDomain.com

È possibile eseguire JS in una pagina ospitata su Server1, se il contenuto è retreived da server2?

in base alla risposta di Daniel in basso, posso includere script tra diversi sottodomini utilizzando il tag <script>, ma per quanto riguarda le richieste asincrone? Cosa succede se scarico uno script da server2 sulla pagina ospitata su server1. Posso usare lo script per comunicare in modo asincrono con un servizio su server2?

+1

Il chilometraggio sta andando a variare un po 'con IE, ma la regola generale è lo stesso host, stessa porta per XHR diretto. Puoi caricare gli script da qualsiasi luogo tu scelga, ma fino a quando async va, l'iniezione di script JSONP è la tua unica opzione senza un proxy. –

risposta

24

È possibile includere solo script tra sottodomini diversi utilizzando il tag <script>, in quanto è esente dal criterio.

Utilizzando http://www.example.com/dir/page.html come sorgente (da Wikipedia):

Compared URL        Outcome Reason 
--------------------------------------------------------------------------------------------- 
http://www.example.com/dir/page.html  Success Same protocol and host 
http://www.example.com/dir2/other.html  Success Same protocol and host 
http://www.example.com:81/dir2/other.html Failure Same protocol and host but different port 
https://www.example.com/dir2/other.html Failure Different protocol 
http://en.example.com/dir2/other.html  Failure Different host 
http://example.com/dir2/other.html   Failure Different host (exact match required) 
http://v2.www.example.com/dir2/other.html Failure Different host (exact match required) 

UPDATE:

Posso utilizzare lo script in modo asincrono per comunicare con un servizio sul server2?

Sì, è possibile con JSONP, che sfrutta la politica aperta per <script> tag per recuperare JSON di altra origine.

Si consiglia inoltre di considerare l'utilizzo di un proxy inverso, come desribed nel seguente Stack Overflow posta:

+1

@Daniel, grazie per la risposta. Ho modificato la domanda con una domanda di follow-up. Qualche possibilità di aggiungere i tuoi pensieri a questo? Grazie – DaveDev

+0

@Dave: potresti voler controllare JSONP. Si consiglia inoltre di prendere in considerazione l'impostazione di un proxy inverso, come descritto qui: http://stackoverflow.com/questions/2482916/what-am-i-missing-in-the-xmlhttprequest/2482941#2482941 –

+0

Questo è un grande , risposta completa. – wprl

0

Certo, è possibile eseguire qualsiasi script che si inserisce sul tuo mai pensa da dove viene. Pensa a come inserire una mappa di google sulla tua pagina.

Quello che descrivi è un modello chiamato jsonp. Dove un server su un altro host restituisce uno script che inserisci nella tua pagina e lo script chiama una funzione nella tua pagina con gli argomenti di risposta.

Problemi correlati