2017-06-20 5 views
0

requestjsを使用して複数のjavascriptファイルと複数のサーバー間でもリクエストを作成してクッキーを共有したいと考えています。 そのため、私はクッキーをデータベースに文字列として格納し、必要に応じてそれらを取得します。文字列でクッキーを設定する

文字列はtough-cookie私はそれらのクッキーを使用するrequestjsを取得できますか

[{"domain":"domain.com","path":"/","secure":true,"expires":"2018-06-19T15:36:04.000Z","key":"key1","value":"val1","httpOnly":false,"hostOnly":true},{"domain":"domain.com","path":"/","secure":true,"expires":"2018-06-19T15:36:04.000Z","key":"key2","value":"val2","httpOnly":false,"hostOnly":true}] 

に準拠しているはずである。このように見えますか? tough-cookieオブジェクトには、私が必要と考える方法fromJSON(string)があります。

だからたぶん私は

var cookies = '[{"domain":"domain.com","path":"/","secure":true,"expires":"2018-06-19T15:36:04.000Z","key":"key1","value":"val1","httpOnly":false,"hostOnly":true},{"domain":"domain.com","path":"/","secure":true,"expires":"2018-06-19T15:36:04.000Z","key":"key2","value":"val2","httpOnly":false,"hostOnly":true}]'; 

var j = request.jar(); 
j.fromJSON(cookies); 

request.get({ url: 'https:/url.com', jar : j}, 
function(error, response, body) { 
     console.log(body); 
}); 

を行うことができるはずだと思うが、これはTypeError: j.fromJSON is not a function

がどのように私は、データベースから取り出されたクッキー文字列を使用するための要求を取得することができ、エラーを与えますか?

答えて

0

それは直接入力するためにクッキーをオブジェクトにアクセスするために動作しますが、これが最善の解決策である場合、私は知らない。

TOUGH = require('tough-cookie'); 

var cookies = '[{"domain":"domain.com","path":"/","secure":true,"expires":"2018-06-19T15:36:04.000Z","key":"key1","value":"val1","httpOnly":false,"hostOnly":true},{"domain":"domain.com","path":"/","secure":true,"expires":"2018-06-19T15:36:04.000Z","key":"key2","value":"val2","httpOnly":false,"hostOnly":true}]'; 

var j = request.jar(); 
cookies = JSON.parse(cookies); 
for(i = 0; i < cookies.length; i++) { 
    var cookie = new TOUGH.Cookie(cookies[i]); 
     var domain = cookie.canonicalizedDomain(); 

     if (!j._jar.store.idx[domain]) { 
     j._jar.store.idx[domain] = {}; 
    } 
    if (!j._jar.store.idx[domain][cookie.path]) { 
     j._jar.store.idx[domain][cookie.path] = {}; 
    } 

j._jar.store.idx[domain][cookie.path][cookie.key] = cookie; 
} 

//this will use the set cookies 

request.get({ url: 'https:/url.com', jar : j}, 
function(error, response, body) { 
     console.log(body); 
}); 
関連する問題