Sessionは簡単な感じがするようですが、実際の応用では細部がたくさんあります.本文は現在流行しているnode.jsを例に簡単な紹介をする.
Cookie
Webアプリケーションでは、複数のリクエスト間で「ユーザセッション」を共有する必要があります.しかしHTTP 1.0プロトコルは無状態である.その時Cookieが現れた.クッキーはどうやって処理したの?
Cookieの処理:
サービス側がクライアントにCookieクライアントを送信するブラウザは、Cookieを保存し、要求されるたびにブラウザがHTMLドキュメントが送信される前に、WebサーバがHTTPヘッダのSet-Cookieメッセージを送信することによって、次の例のように、Cookieをユーザの閲覧器に送信する.
重要な属性: name=value:キー値ペア、保存するKey/Valueを設定できます.ここでのnameは他の属性項目の名前と同じではありません. Expires:有効期限(秒)が設定されている時点で、expires=Wednesday、09-Nov-99 23:12:40 GMT などのCookieが無効になります. maxAge:最大失効時間(ミリ秒)、設定後の失効時間 secure:secure値がtrueの場合、cookieはHTTPでは無効であり、HTTPSでは しか有効ではない. Path:path=/のようなクッキーが影響する道を表す.パスが一致しない場合、ブラウザはこのCookie を送信しません. httpOnly:マイクロソフトがCOOKIEに拡張したものです.COOKIEに「httpOnly」属性が設定されている場合、プログラム(JSスクリプト、applet等)によりCOOKIE情報が読み取れず、XSS攻撃発生 を防止する.
Nodejsのクッキー
Nodejsはどのようにクライアントにクッキーを送信したいのですか?2つのシナリオがあります.
response.writeHeadを使用します.コードは次のとおりです.
欠点:response.writeHeadを使用すると、ヘッダは1回しか送信できません.すなわち、1回のみ呼び出され、response.renderと共存できません.そうしないと、エラーが表示されます.
response.cookieを使用します.コードの例は次のとおりです.
構文:response.cookie('cookieName','name=value[name=value...],[options]);
optionsの各フィールドの意味は上記で説明したが,ここでは繰り返さない.
クッキーの簡単な使用
expressは4.xバージョン以降、sessionやcookiesを管理する多くのモジュールがexpressに直接含まれるのではなく、`個別にダウンロードしてインストールする必要があります.
CookieParserのインストール:
使用方法:
セッションとは?
sessionは、Cookieがクライアントブラウザに保存され、sessionがサーバに保存されるのとは異なり、クライアントのステータスを記録するメカニズムです.
クライアントブラウザがサーバにアクセスするとき、サーバはクライアント情報を何らかの形でサーバに記録する.これがsessionである.クライアントブラウザが再アクセスする場合は、セッションからクライアントのステータスを検索するだけでよい.
Cookieメカニズムがお客様の「パスポート」をチェックしてお客様のアイデンティティを特定する場合、sessionメカニズムはサーバの「お客様明細書」をチェックしてお客様のアイデンティティを確認します.
sessionはプログラムがサーバ上に構築した顧客ファイルに相当し、顧客が訪問するときは顧客ファイルテーブルを照会するだけでよい.
両者の違い: cookieデータはクライアントのブラウザに格納され、sessionデータはサーバに格納されます. cookieは安全ではありません.他の人はローカルに保存されているCOOKIEを分析し、COOKIE詐欺を行うことができます.安全を考慮してsessionを使用する必要があります. セッションは、一定時間サーバに保存されます.アクセスが多くなると、あなたのサーバーの性能を占有します.サーバーの性能を軽減することを考慮して、COOKIEを使うべきです. 単一クッキーで保存されているデータは4 Kを超えてはいけません.多くのブラウザでは、1つのサイトに最大20個のクッキーを保存することを制限しています.
したがって、登録情報などの重要な情報をセッション、その他の情報として保存する必要がある場合は、クッキーに置くことをお勧めします.
sessionの簡単な応用
cookieと同様に、$sudo npm install express-sessionの主な方法はsession(options)であり、optionsにはオプションパラメータが含まれています.主に: name:クッキーを設定し、セッションのフィールド名を保存します.デフォルトはconnect.sidです. store:sessionの格納方式は、デフォルトではメモリに格納されますが、redis、mongodbなどを使用することもできます.expressエコには対応するモジュールのサポートがあります. secret:設定されたsecret文字列によってhash値を計算しcookieに配置し、生成されたsignedCookieの改ざん防止を行う. cookie:session idを格納するcookieに関するオプションを設定します.デフォルトは(default:{path:'/',httpOnly:true,secure:false,maxAge:null}) です. genid:新しいセッションを生成idの場合、使用する関数は、uid 2というnpmパッケージがデフォルトで使用されます. rolling:各リクエストに対してクッキーを再設定し、デフォルトはfalseです. resave:セッションが変更されていない場合でも、セッション値は保存され、デフォルトはtrueです.
例:
Webアプリケーションでは、複数のリクエスト間で「ユーザセッション」を共有する必要があります.しかしHTTP 1.0プロトコルは無状態である.その時Cookieが現れた.クッキーはどうやって処理したの?
Cookieの処理:
サービス側がクライアントにCookieクライアントを送信するブラウザは、Cookieを保存し、要求されるたびにブラウザがHTMLドキュメントが送信される前に、WebサーバがHTTPヘッダのSet-Cookieメッセージを送信することによって、次の例のように、Cookieをユーザの閲覧器に送信する.
Set-Cookie: name=value; Path=/; expires=Wednesday, 09-Nov-99 23:12:40 GMT;
重要な属性:
Nodejsのクッキー
Nodejsはどのようにクライアントにクッキーを送信したいのですか?2つのシナリオがあります.
response.writeHeadを使用します.コードは次のとおりです.
//
var today = new Date();
var time = today.getTime() + 60*1000;
var time2 = new Date(time);
var timeObj = time2.toGMTString();
response.writeHead({
'Set-Cookie':'myCookie="type=ninja", "language=javascript";path="/";
Expires='+timeObj+';httpOnly=true'
});
欠点:response.writeHeadを使用すると、ヘッダは1回しか送信できません.すなわち、1回のみ呼び出され、response.renderと共存できません.そうしないと、エラーが表示されます.
response.cookieを使用します.コードの例は次のとおりです.
response.cookie('haha', 'name1=value1&name2=value2', {
maxAge:10*1000, path:'/', httpOnly:true
});
構文:response.cookie('cookieName','name=value[name=value...],[options]);
optionsの各フィールドの意味は上記で説明したが,ここでは繰り返さない.
クッキーの簡単な使用
expressは4.xバージョン以降、sessionやcookiesを管理する多くのモジュールがexpressに直接含まれるのではなく、`個別にダウンロードしてインストールする必要があります.
CookieParserのインストール:
$ npm install cookie-parser
使用方法:
var express = require('express');
var cookieParser = require('cookie-parser');
var app = express();
app.use(cookieParser());
app.get('/', function (req, res) {
// session isVisit
// , session isVisit , 1。
if (req.cookie.isVisit) {
req.cookie.isVisit++;
res.send(' ' + req.cookie.isVisit + '
');
} else {
req.cookie.isVisit = 1;
res.send(" ");
console.log("Cookies: ", req.cookies); // cookie
}
});
app.listen(80);
セッションとは?
sessionは、Cookieがクライアントブラウザに保存され、sessionがサーバに保存されるのとは異なり、クライアントのステータスを記録するメカニズムです.
クライアントブラウザがサーバにアクセスするとき、サーバはクライアント情報を何らかの形でサーバに記録する.これがsessionである.クライアントブラウザが再アクセスする場合は、セッションからクライアントのステータスを検索するだけでよい.
Cookieメカニズムがお客様の「パスポート」をチェックしてお客様のアイデンティティを特定する場合、sessionメカニズムはサーバの「お客様明細書」をチェックしてお客様のアイデンティティを確認します.
sessionはプログラムがサーバ上に構築した顧客ファイルに相当し、顧客が訪問するときは顧客ファイルテーブルを照会するだけでよい.
両者の違い:
したがって、登録情報などの重要な情報をセッション、その他の情報として保存する必要がある場合は、クッキーに置くことをお勧めします.
sessionの簡単な応用
cookieと同様に、$sudo npm install express-sessionの主な方法はsession(options)であり、optionsにはオプションパラメータが含まれています.主に:
例:
var express = require('express');
var session = resuire('session');
var app = exoress();
app.user(session({
secret: 'hubwiz app', //secret
cookie: {maxAge: 60 * 1000 * 30} // ( )
}));
app.get('/', function (req, res) {
if (req.session.sign) {//
console.log(req.session);// session
res.send('welecome ' + req.session.name + ', ');
} else {// index
req.session.sign = true;
req.session.name = ' ';
res.end(' !');
}
});
app.listen(80);