11

我们正在使用 Atom Shell(目前称为electron)将 Web 应用程序包装为桌面应用程序,并且由于 CORS 限制而无法进行跨域 ajax 调用。

我们还尝试了 nw.js(以前称为 Node-Webkit),使用它进行跨域 ajax 调用没有问题。Atom Shell (Electron) 默认是否限制跨域调用?

4

3 回答 3

22

如果网页以“file://”模式加载并且没有由 http 服务器提供服务,则默认情况下可以进行 ajax 调用。

如果您仍然遇到 CORS 限制问题,可以将此选项设置为 browser-window 对象:

var BrowserWindow = require('browser-window');
var win = new BrowserWindow({
  webPreferences: { webSecurity: false }
});
于 2015-05-07T20:23:02.063 回答
9

这里有两个问题

CORS 限制,防止客户端发起请求,以及由服务器设置的 Access-Control-Allow-Origin 标头。

如前所述,通过在 Browser-window 对象上设置 web-security 选项来解决第一个问题。

"webPreferences" : {
    "webSecurity" : false
},

据我所知,Electron 实际上发送“file://”作为请求中 Origin 的值的第二个问题没有解决方案。您的选项是在 Access-Control-Allow-Origin 标头(服务器端)中允许“​​file://”或“*”。

我实际上已经要求允许在请求上设置来源,但我怀疑它不会得到太大的牵引力。

于 2015-07-16T13:34:28.213 回答
7

解决方案的更新语法:

var BrowserWindow = require('browser-window');
var win = new BrowserWindow({
    webPreferences: {webSecurity: false}
});
于 2017-11-03T20:56:38.230 回答