1、クッキー
HTTPはステートレスなプロトコルです。例:ドメイン名のホームページを開き、訪問者を特定することはできません、ドメイン・ネーム・サーバの他のページを開きます。その同じブラウザで同じWebサイトにアクセスするには、各訪問は何の関係もありません。
クッキー原理は次のとおりです。クライアントのブラウザサーバーへの最初のアクセスの後、サーバーは、クライアントのブラウザが、再びこのクッキー情報を運ぶたびに、同じドメインにアクセスする際に、いくつかのJSONデータは、その後、特定され返されます。
機能
- クッキーは、ユーザーが見て自由に、暗号化されていません。
- ユーザーがクッキーを削除する、またはそれを無効にすることができ、有効期限を設定されていない、あなたが閉じた後に、デフォルトでは、ブラウザが失敗します
- クッキーは、改ざんすることができます
- クッキーは、攻撃するために使用することができます
- クッキーの店は非常に小さいです。(4K未満)
クッキーは、非クロスドメインな性質を持っています。GoogleのクッキーGoogleにアクセスするための唯一のブラウザを運ぶクッキーの仕様を、よると、Baiduはクッキーを運ぶことはありません。グーグルは、Googleのクッキーを操作することができ、およびBaiduのクッキーを操作することはできません。
でのNode.jsを使ってクッキー:
必要cookieParser =定数1( 'パーサークッキー'); // モジュールパーサ-クッキー 2アプリ= CONST エクスプレス(); 3 app.use(cookieParser()); // 中間部品 4 app.get( '/'、 (REQ、RES)=> { 5 res.send( 'ルートルート' ); 6 }) 7 app.get( '/ログイン'、(REQ、RES)=> { 8。 // クライアントのクッキーを取得 9。 コンソール。 (req.cookies)をログ; 10 11。 // サーバクッキーによって送達 res.cookie 12である( '天国'、 '666' 、{ 13 MAXAGEさ:900000 // 有効時間は、ミリ秒 14 }); 15 res.send( 'OK' ); 16 }) 17 18 app.listen(3000)。
2、セッション
サーバーは、最初のセッションを作成し、クッキーの追跡セッションに依存して、利用者の状態を記録する必要がある場合、サーバーは、HTTPプロトコルでクライアントを教えてくれます、あなたはそれぞれの時間が経過した後、クライアントの要求は、このセッションIDを運ぶために、内部のクッキーにセッションIDを記録する必要があり、サーバーは、クライアントを識別することができるようになります。
機能
- セッションは、技術から生まれたのではなく、クッキーに依存していません。ログイン効果が消えたときに、ブラウザのクッキーが無効になっている場合、またはユーザーがクッキーをクリアし、ログが消えました。
- セッションクッキーは、それがどこにあるかよりも違うのですか?発行したセッションが文字化けして、キャッシュサーバ自体に何か;アップ文字化けして次のブラウザは、キャッシュを持つこの時間は誰が見て比較しますか?
Node.jsの中のセッション
/ * セッションデータをサーバに格納されているが、ブラウザに格納されたインデックスは、ブラウザベースのcookieidは、対応するセッションを識別する セッションモジュールが使用NPM-ExpressのI -Sセッション * / constのエクスプレス =必要とする(「エクスプレス」); CONSTセッション = (「エクスプレス・セッション」)を必要とします。 // 解析するモジュールセッションのセッション・エクスプレス のconst =のApp エクスプレス(); // セッションミドルウェア式の開始 app.use(セッションを({ //は、クライアント暗号化されたセットが必要ですクッキー の秘密: '天国'、 // 任意の文字列、クッキー暗号化された クッキー:{MAXAGE:300000 }、 再保存:trueに、 saveUninitialized:trueに、 })) //ミドルウェアは、これインターセプタの前に、時系列順に行われる app.get( 'favicon.icoを/'(REQ、RES)=> { リターン; }) app.get( '/'、(REQ、RES) => { res.send( + 'あなたはフットプリントされている' req.session.lvyou); }) app.get( '/:都市'、(REQ、RES)=> { ましょう市 = req.params.city。 // にconsole.log(req.session); LET cityArr req.session.lvyou || = []; cityArr.push(市); req.session.lvyou = cityArr; res.send( "あなたは今日行きます。" + 都市); }) app.listen( 3000)。
/ * データベースにメモリから抽出されたセッションMongoの モジュールNPM iが接続-Mongoの-S Mongoのセッションデータベースに * / constのエクスプレス =(「エクスプレス」を必要とする)、 アプリ = エクスプレス()、 セッション = "(必要セッション・エクスプレス" )、 Mongosessionが接続-Mongoの"を(必要= " )セッション()、 マングースはマングース(必要=" " ); // データベースに接続 mongoose.connect("のMongoDB:// localhostの/恵み」、{useNewUrlParser。 真へ}) // セッション式 app.use(セッション({ :秘密 "doukeyi"、 // 秘密鍵、暗号化 ローリング:trueに、 // 各対話(ページ操作、タグ、アヤックス)が、時間をリセット クッキー:{MAXAGE:1000 * 60 * 60}、// 1時間のための有効なクッキー :再保存をfalseに、 // 各要求の再あればセーブデータは saveUninitialized:falseに、 // 初期値設定のデフォルトあれば ストア:新しい新しいMongosession({ URL::「MongoDBのは// localhost /をバウンティ」 // データベースに保存されたセッション、データベースは自動的に失効した後にクリアされます }) ))} / * セッションクリア * / router.get( "/ジンバブエログアウト"を、機能(REQ、RES){ ; req.session.destroy() (res.redirect"/ログイン" ); })
3、違い
- クッキーは明確であり、セッションが文字化けしています。
- クライアントのブラウザからクッキー、サーバー・セッションがあります。
- クッキー小さなメモリ、大規模なセッションメモリ。