angularjs - Electron :如何在没有CSRF保护的情况下在 Electron 中执行AngularJS?

标签 angularjs csrf electron httpserver

最近,我开始开发我的第一个 Electron 应用程序,遇到了一个问题,希望有人可以帮助我。

我想使用Electron通过使用Admin Backend AngluarJS HTML主题快速创建一个漂亮的应用程序。

AngluarJS主题可以从http://来源正常工作,但是当我从本地驱动器(例如C:\驱动器)加载主题时,它会破坏主题,因为(我认为)Chrome中的CSRF保护策略。

现在,我用谷歌搜索了,但是找不到很好的解决方案。我认为以 Electron 方式运行http服务器可能是一种解决方案,因此我尝试了npm http-server软件包。这种方法的问题在于,在这种情况下,因为http服务器仅处理静态文件,所以nodejs代码不再起作用。

可能还有其他解决方案吗?

感谢您与我一起思考!

最佳答案

Electron运行AngularJs应用程序没有问题。
我已经使用Angular构建了一些Electron应用程序,而没有CSRF问题。

解决此问题的一种方法是创建一个在 Electron 内部运行的简单服务器,如下所示:

// <YOUR-ENTRY-FILE>.js

app.on('ready', function() {
    mainWindow = new BrowserWindow({
        width: 800,
        height: 600
    });

    var server = http.createServer(requestHandler).listen(9527);

    mainWindow.loadUrl('http://localhost:9527/index.html');
    mainWindow.webContents.on('did-finish-load', function() {
        mainWindow.setTitle(app.getName());
    });
    mainWindow.on('closed', function() {
        mainWindow = null;
        server.close();
    });
});

function requestHandler(req, res) {
    var
        file    = req.url == '/' ? '/index.html' : req.url,
        root    = __dirname + '/www',
        page404 = root + '/404.html';

    getFile((root + file), res, page404);
};

function getFile(filePath, res, page404) {

    fs.exists(filePath, function(exists) {
        if(exists) {
            fs.readFile(filePath, function(err, contents) {
                if(!err) {
                    res.end(contents);
                } else {
                    console.dir(err);
                }
            });
        } else {
            fs.readFile(page404, function(err, contents) {
                if(!err) {
                    res.writeHead(404, {'Content-Type': 'text/html'});
                    res.end(contents);
                } else {
                    console.dir(err);
                }
            });
        }
    });
};

确实不需要您执行此操作,检查您的路径并将其作为最后的选择。

关于angularjs - Electron :如何在没有CSRF保护的情况下在 Electron 中执行AngularJS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37026659/

相关文章:

javascript - Gulp 使用 requirejs 缩小 Angular 应用程序文件的问题

javascript - AngularJS 1.2.19 从嵌套 $resource 服务返回值

node.js - 删除 API 后调用的 csrf protecteion

reactjs - 有没有办法将React Native模拟器嵌入到Electron应用程序中?

google-chrome - avconv/ffmpeg 命令为 chrome 编码漂亮的全高清 webm

javascript - 从模态形式( Angular )中提取用户输入

javascript - 如何在 AngularJS 中实现服务器端搜索框

spring-security - CSRF token 已关联到此客户端”而不禁用 CSRF

php - 在 Laravel 中为 CSRF token 设置 httpOnly 标志

sqlite - 节点 Webkit 与 Electron