2015-05-07 14 views
8

Stiamo lavorando con Atom Shell (attualmente noto come electron) per racchiudere un'applicazione Web come app desktop e avendo problemi a effettuare chiamate ajax tra domini a causa della restrizione CORS.Chiamata Ajax del dominio incrociato nella shell Atom

Abbiamo anche provato nw.js (precedentemente noto come Node-Webkit) e non abbiamo avuto problemi a effettuare chiamate ajax tra domini con esso. Atom Shell (Electron) limita le chiamate interdominio per impostazione predefinita?

risposta

14

Se la pagina Web viene caricata in modalità "file: //" e non viene servita da un server http, è possibile effettuare chiamate ajax per impostazione predefinita.

Se avete ancora problemi con restrizioni CORS, è possibile impostare questa opzione per l'oggetto browser-finestra:

var BrowserWindow = require('browser-window'); 
var win = new BrowserWindow({ 
    'web-preferences': {'web-security': false} 
}); 
+0

Questo si spegne tutte le web-sicurezza, giusto? Mi chiedo se esiste un modo per aggiungere un singolo dominio come origine "attendibile" al posto di questo carattere jolly globale. – masi

+7

Nota: la sintassi è stata modificata per questo, i trattini sono stati eliminati. Ora dovrebbe essere 'webPreferences' e' webSecurity' – Jerry

6

ci sono due problemi qui

CORS restrizioni, che impediscono il cliente di avviare una richiesta e l'intestazione Access-Control-Allow-Origin che è impostata dal server.

Il primo problema viene risolto come indicato impostando le opzioni di sicurezza Web sull'oggetto Finestra del browser.

"web-preferences" : { 
    "web-security" : false 
}, 

La seconda questione cui Electron in realtà invia 'file: //' come il valore del origine nella richiesta non ha una soluzione, per quanto posso dire. Le opzioni consentono "file: //" o "*" nell'intestazione Access-Control-Allow-Origin (lato server).

In realtà ho richiesto che fosse possibile impostare l'origine sulle richieste ma sospetto che non otterrà molta trazione. sintassi aggiornato

3

Solutions:

var BrowserWindow = require('browser-window'); 
var win = new BrowserWindow({ 
    webPreferences: {webSecurity: false} 
}); 
Problemi correlati