Atom Shell中的跨域Ajax调用

Raa*_*esh 10 cors electron

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

我们还尝试了nw.js(以前称为Node-Webkit),我们可以用它来进行跨域ajax调用.Atom Shell(Electron)默认限制跨域调用吗?

小智 20

如果网页以"file://"模式加载而不是由http服务器提供,则默认情况下可以进行ajax调用.

如果您仍然遇到CORS限制问题,可以将此选项设置为浏览器窗口对象:

var BrowserWindow = require('browser-window');
var win = new BrowserWindow({
  webPreferences: { webSecurity: false }
});
Run Code Online (Sandbox Code Playgroud)

  • 请注意,语法已更改,删除了破折号.它现在应该是`webPreferences`和`webSecurity` (7认同)

Ark*_*niK 9

这里有两个问题

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

通过在Browser-window对象上设置web-security选项,可以解决第一个问题.

"web-preferences" : {
    "web-security" : false
},
Run Code Online (Sandbox Code Playgroud)

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

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


mim*_*mim 7

解决方案的更新语法:

var BrowserWindow = require('browser-window');
var win = new BrowserWindow({
    webPreferences: {webSecurity: false}
});
Run Code Online (Sandbox Code Playgroud)