2016-07-04 16 views
0

ユニバーサルアプリケーションでは、サーバー/サーバーのhttpリクエストですべてのユーザーCookieが失われます。 )クッキーは予想通りここにある(/ GETヒット)サーバー/サーバーリクエストでクッキーを転送

const fetch = require('isomorphic-fetch'); 
const bodyParser = require('body-parser'); 
const cookieParser = require('cookie-parser'); 
const session = require('express-session'); 

const server = require('express')(); 

server.use(bodyParser()); 
server.use(cookieParser()); 

server.use(session({ 
    secret: 'foo', 
    httpOnly: false 
})); 

server.get('/set-cookies', (req, res) => { 
    req.session.user = { name: 'john doe' }; 
    res.send('OK'); 
}); 

server.get('/a', (req, res) => { 
    console.log('COOKIE IN A = ', req.cookies); // Cookies are here ! 

    const options = { credentials: 'include' }; 

    fetch('http://localhost:3131/b', options) 
    .then(() => { 
     res.send('OK'); 
    }); 
}); 

server.get('/b', (req, res) => { 
    console.log('COOKIES IN B = ', req.cookies); // Cookies are lost ! How to get it back ? 
    res.sendStatus(200); 
}); 

server.listen(3131); 

1)GET /セットクッキー 2ヒット

問題を:: 私は事を再現する小さなnodeJSアプリを構築していた場合/ AコントローラはGET/BへのAJAXリクエストを行い、それはクッキーを転送しないので、ルート/ bはユーザを認証できません

すべてのリクエストでユーザのクッキーを転送するにはどうすればいいですか? 私は「クッキージャー」について聞いたことがありますが、それが何であるかを明確に説明することができず、誰かがそれについての知識を共有することができれば、ウェブ上で何の説明も見つけられませんでした。

+0

@MukeshSharma私は – Ludo

+0

することができます...「ユニバーサルアプリでは」、これは、もちろん、私は私のアプリでこのコードを使用しようとしているわけではない技術的なケースを再現するだけの方法であることにより、私のメッセージを開始しましたコードを共有し、 '/ a'から'/b'をどのように呼び出すのでしょうか? –

+0

@MukeshSharmaユニバーサル(または同形)アプリは、クライアントとサーバー側で同じコードを実行するアプリケーションです。 /aからの/ bを呼び出すコードはすでに自分の投稿にあります。これはfetch()呼び出しです。 – Ludo

答えて

1

whatwg-fetchには、以下の方法でCookieを送信するオプションがありますが、動作していないようです。

fetch('http://localhost:3131/b', { 
    credentials: 'same-origin' 
}); 

fetchに手動でクッキーを送信する方法は次のとおりです。

server.get('/a', (req, res) => { 
    console.log('COOKIE IN A = ', req.cookies); // Cookies are here ! 
    const options = { 
     'headers' : { 
      'Cookie': req.headers.cookie 
     } 
    }; 

    fetch('http://localhost:3131/b', options) 
     .then(() => { 
      res.send('OK'); 
     }); 
}); 
関連する問題