我正在本地测试我的Express JS服务器和网站。该网站应该使用javascript将HTTP请求发送到快速服务器,到目前为止,该服务器运行良好,但我的会话未保存。我已经花了数小时来结束对多种不同事物的测试,并遵循了许多教程,但该课程仍然无法保存。我尝试过有和没有CORS。当我在浏览器中访问该URL时,该会话工作正常,但是在我正在开发的页面上,我只是在服务器上对该会话保持未定义状态。
这是我削减到的最小代码示例(来自https://www.tutorialspoint.com/expressjs/expressjs_sessions.htm和其他地方的CORS内容):
var express = require( 'express' );
var cookieParser = require( 'cookie-parser' );
var session = require( 'express-session' );
var app = express();
app.use(function( req, res, next )
{
res.header( 'Access-Control-Allow-Origin', '*' );
res.header( 'Access-Control-Allow-Credentials', true );
res.header( 'Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE' );
res.header( 'Access-Control-Allow-Headers', "Origin, X-Requested-With, Content-Type, Accept" );
next();
});
app.use( cookieParser() );
app.use( session( { secret: 'ssshhhhh' } ) );
app.get( '/test', function( req, res, next )
{
if( req.session.page_views )
{
req.session.page_views ++;
res.send( "You visited this page " + req.session.page_views + " times" );
}
else
{
req.session.page_views = 1;
res.send( "Welcome to this page for the first time!" );
}
console.log( "viewcount " + req.session.page_views );
});
app.listen( 4444 );
这是我的jquery请求(我也曾在ajax中尝试过,带有凭据,没有您命名):
$.get( "http://localhost:4444/test", {},
function( data )
{
alert( data );
});
我已经连续花费了多天-谢谢您的帮助。