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