2016-03-26 6 views
0

ElectronでCookieを使用する必要がありますが、file://上で動作し、ChromiumはローカルCookieをサポートしていません。Electronでミニサーバーを回転

セッションクッキーを保存するには、少しhttpサーバーを起動する必要があります。私は自分のAPIで認証し、APIに問い合わせるためにクッキーを保存する必要があります。 https://www.npmjs.com/package/electronify-server https://github.com/frankhale/electron-with-express

そして、私はすべてインターネット上で検索してきたが、私は解決策の作業を取得するように見えることはできません。

私はこれを行うには、いくつかのリソースを見つけました。 :(

私は電子の上に角度のアプリを持って、私は私ができる限り多くの情報を含めるようにしようとしますので

main.js - 。。http://pastebin.com/bnBtBTbm

script.js - http://pastebin.com/x7K8VzEW

私はシンプルなAとして、このアプリを維持しようとしています

enter image description here

から

ファイル構造可能です。私はfile://の代わりにlocalhostでこれを実行させるために必要なものは何もわからないので、どんな助けでも大歓迎です!

答えて

0

なぜ私は特にあなたがクッキーを必要とするのが不思議ですか?ほとんどの場合、古いlocalstorageはElectronではうまくいくでしょう。あなたにはAngularが言及されましたが、これは提供される方が好みです。

私は自分のElectronアプリケーションの1つで使用している基本的なHTTPサーバーを単純化しました。あなたはnpm install mimeにする必要がありますが、他のすべてを内蔵しています。

var app = require('app'); 
var http = require('http'); 
var fs = require('fs'); 
var path = require('path'); 
var mime = require('mime'); 

function handleRequest(req, res) { 
    var file = path.join(app.getAppPath(), req.url); 

    fs.exists(file, function(exists) { 
     if (exists && fs.lstatSync(file).isFile()) { 
      res.setHeader("Content-Type", mime.lookup(file)); 
      res.writeHead(200, { 
       'Access-Control-Allow-Origin': '*' 
      }); 
      fs.createReadStream(file).pipe(res); 

      return; 
     } 

     res.writeHead(404); 
     res.write('404 Not Found'); 
     res.end(); 
    }); 
} 

var server = http.createServer(handleRequest); 

server.listen(8888, function() { 
    console.log('server started at http://localhost:8888'); 
}); 

なお、この意志サーバあなたの全体の電子アプリを。特定のディレクトリにのみサービスを提供するように変更することができます。

また、私は修正後にこれをテストしなかったことに注意してください。全く動作しても、すべてのケースを処理できない場合があります。 ;)

+0

今すぐテストしてください! :)私はそれを実装しようとした後に更新を投稿します!ありがとう!クッキーに関する限り、私はOpenBMCと協力しています.REST APIは、ログイン後に追加のクエリを作成するために必要な認証Cookieを送り返しています.ElectronはChromiumを使用しているため、ローカルクッキーをサポートします: file:/// - 代わりにhttp://プロトコルでアプリケーションを実行する必要があります。これが他のアイデアを誘発する場合は、私に教えてください!私はこれまでにこのような状況に慣れたことはないので、正しい質問をしても100%確実ではない。 – Lindsay

+0

さて、それは動作します! :)しかし、それはまだlocalhost上で実行されています。私は127.0.0.1が必要だと思います - この作業を行う方法はありますか? – Lindsay

+0

localhostの使用には何も問題はありません。それは何らかの理由で働いていない限り? – Teak

関連する問題