我们正在使用 Atom Shell(目前称为electron)将 Web 应用程序包装为桌面应用程序,并且由于 CORS 限制而无法进行跨域 ajax 调用。
我们还尝试了 nw.js(以前称为 Node-Webkit),使用它进行跨域 ajax 调用没有问题。Atom Shell (Electron) 默认是否限制跨域调用?
如果网页以“file://”模式加载并且没有由 http 服务器提供服务,则默认情况下可以进行 ajax 调用。
如果您仍然遇到 CORS 限制问题,可以将此选项设置为 browser-window 对象:
var BrowserWindow = require('browser-window');
var win = new BrowserWindow({
webPreferences: { webSecurity: false }
});
这里有两个问题
CORS 限制,防止客户端发起请求,以及由服务器设置的 Access-Control-Allow-Origin 标头。
如前所述,通过在 Browser-window 对象上设置 web-security 选项来解决第一个问题。
"webPreferences" : {
"webSecurity" : false
},
据我所知,Electron 实际上发送“file://”作为请求中 Origin 的值的第二个问题没有解决方案。您的选项是在 Access-Control-Allow-Origin 标头(服务器端)中允许“file://”或“*”。
我实际上已经要求允许在请求上设置来源,但我怀疑它不会得到太大的牵引力。
解决方案的更新语法:
var BrowserWindow = require('browser-window');
var win = new BrowserWindow({
webPreferences: {webSecurity: false}
});