跨域 Ajax 调用 Atom Shell

Cross Domain Ajax Call in Atom Shell

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

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

如果网页以 "file://" 模式加载且未由 http 服务器提供服务,默认情况下您可以进行 ajax 调用。

如果您仍然无法解决 CORS 限制问题,可以将此选项设置为浏览器-window 对象:

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

这里有两个问题

CORS限制,防止客户端发起请求,Access-Control-Allow-Origin header服务器设置

通过在 Browser-window object 上设置 web-security 选项解决了第一个问题。

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

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

我实际上已经请求允许在请求中设置原点,但我怀疑它不会有太大的吸引力。

解决方案的更新语法:

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