私の問題は、エクスプレスでノードを介してセッションを取得しようとしているときにクライアント側に関係しています。
たとえば、このスニペットhttps://gist.github.com/visionmedia/1491756では、私は ajax リクエストで常に「0 回表示」していましたが、ブラウザでは問題なく、変数のインクリメントも問題ありません。
PHPで試してみましたが、すべて動作します。ブラウザと Ajax リクエストを使用。
この投稿と同じ問題です:セッション Cookie は ajax と nodejs サーバーを使用して変更されません
編集
このコードを使用して、JSON データを取得し、nodeJS セッションを取得します。
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.onreadystatechange = function () {
alert(xhr.responseText);
if (xhr.readyState != 4 || xhr.status != 200) return;
var response = {};
response = xhr.responseText;
console.log(response);
return response;
}
xhr.open(type, url);
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.send(params);
NodeJS の場合、次のコードを使用します。
// In my app.js
// To enable CORS
var allowCrossDomain = function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "X-Requested-With");
res.header('Access-Control-Allow-Credentials', 'true');
next();
};
//...
// The session "visitCount"
app.get('/', function(req, res, next) {
req.session.visitCount = req.session.visitCount ? req.session.visitCount + 1 : 1;
res.send('You have visited this page ' + req.session.visitCount + ' times');
});
ご協力いただきありがとうございます !