首页 文章

Atom Shell中的跨域Ajax调用

提问于
浏览
9

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

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

3 回答

  • 6

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

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

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

    这里有两个问题

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

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

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

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

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

  • 16

    解决方案的更新语法:

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

相关问题