Tentativo di effettuare una richiesta AJAX di un dominio incrociato su un server che non possiedo

1

Sono consapevole che i programmi javascript in esecuzione in un browser sono associati alla politica same-origin che impedisce loro di richiedere servizi da un server che si trova su un dominio diverso. Ciò che ho ricavato è che consente di dire che uno script su www.mysite.com non può richiedere un servizio da www.myothersite.com o anche mysite.com .

Se eseguo il seguente codice da www.mysite.com :

var link = "https://www.myothersite.com/jobs-feed.xml";
$.ajax({
      type:"GET",
      url: link,
      dataType: "xml",
      success: function(text){
              alert(text);
      }
})

Questo errore apparirà nella console:

XMLHttpRequest cannot load 
www.myothersite.com/jobs-feed.xml. 
No 'Access-Control-Allow-Origin' header is present on the requested resource.
Origin 'www.mysite.com' is therefore not allowed access.

Ho letto che esiste un certo numero di modi per prevenire questo errore e fare una richiesta di cross domain AJAX con successo.

  1. JSONP - Ciò richiede che i dati vengano restituiti in formato JSON , ma altrimenti consentirà ai programmi JS in esecuzione nei browser di richiedere dati da un altro server in un dominio diverso. Qualcosa che di solito è proibito a causa del same-origin policy.

  2. Cross Origin Request - Fa uso di HTTP headers per consentire una richiesta di ajax cross-domain . Richiede browser e server abilitati per CORs.

Ora ecco la mia domanda, se mi piacerebbe andare con una richiesta di COR e non ho accesso al server per abilitarlo per COR's cosa dovrei fare? Devo contattare l'amministratore del server e chiedere loro di permettermi di connettermi? Non sono molto esperto quando si tratta di reti e server di computer, non è sicuramente il mio punto di forza.

Ma da quello che ho raccolto l'errore di cui sopra è di solito un problema con il server che non consente al dominio richiedente l'accesso ai dati? È corretto?

Se sì, come posso superare questo? idealmente, JSONP sarebbe un'opzione desiderata ma i dati non sono in formato JSON , nel mio caso è XML .

Qualsiasi aiuto sarebbe apprezzato. Ho cercato numerosi link online e ho cercato di capire circa CORs e cross domain ajax requests . Mi hanno sicuramente aiutato a capire cosa sta andando storto, ma non sono sicuro di come potrei fare per abilitare i COR.

Se questa è più una domanda per SO Mi scuso, sto più cercando le opinioni degli altri nella comunità di programmazione.

Grazie per l'aiuto.

    
posta Javacadabra 05.02.2015 - 10:49
fonte

2 risposte

3

Che cosa farei:

  1. Contatta il sito di terze parti e chiedi se potrebbero includerti la loro politica CORS, se non poi
  2. Assicurati che non ci sia nessun JSONP o un simile "accesso pubblico" da usare, se non poi
  3. Utilizza un proxy CORS (ce ne sono parecchi là fuori: link - Ma sappi che ora ti fidi che il provider CORS sia l'intermediario di tutte le informazioni), se le tue informazioni sono troppo sensibili per questo allora
  4. Crea o installa il tuo proxy CORS di cui ti fidi
risposta data 05.02.2015 - 11:05
fonte
0

Fondamentalmente, non puoi usufruire dei servizi AJAX di qualcun altro a meno che non ti concedano esplicitamente il permesso.

Potrebbero esserci tutti i tipi di informazioni sensibili che potrebbero essere esposte come risultato.

Il mio browser mi protegge da questo rafforzando le politiche di origine incrociata.

Ovviamente, potrei sconfiggerlo modificando il mio browser per ignorare i problemi di origine incrociata. Ma poi mi sto solo hackerando.

    
risposta data 05.02.2015 - 10:55
fonte

Leggi altre domande sui tag