2015-05-07 44 views
8

我們與殼牌的Atom(目前稱爲electron)個工作包的web應用程序,桌面應用程序,有麻煩跨域AJAX由於CORS限制呼叫。跨域AJAX調用中的Atom殼牌

我們也嘗試nw.js(原名爲節點的Webkit),我們與它沒有任何問題使得跨域Ajax調用。 Atom Shell(Electron)默認限制跨域調用嗎?

回答

14

如果網頁中的「file://」加載模式,而不是通過一個HTTP服務器提供服務,你可以在默認情況下Ajax調用。

如果您仍然有麻煩與CORS限制,你可以將此選項設置爲瀏覽器窗口對象:

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

這將關閉所有網絡的安全性,是否正確?我想知道是否有一種方法可以將單個域添加爲「可信」來源,而不是此全局通配符。 – masi

+7

請注意,語法已更改爲此,破折號已被刪除。它現在應該是'webPreferences'和'webSecurity' – Jerry

6

有兩個問題在這裏

CORS的限制,這防止客戶端啓動一個請求,以及由服務器設置的Access-Control-Allow-Origin頭部。通過設置瀏覽器窗口對象的網絡安全選項提到

的第一個問題就解決了。

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

第二個問題,即電子實際發送「文件://」作爲要求源的值不會有解決的辦法,據我可以告訴。 你的選擇是,讓「文件://」或「*」的訪問控制允許來源包頭(服務器端)。

其實我已經要求設置的請求的來源被允許,但我懷疑這會不會得到太多的牽引力。

3

解決方案更新過的語法:

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