0

Cookie を使用してコンテンツを提供する Express.js Web サーバーに接続しようとしている Java クライアントがあります。Express サーバーはブラウザーでは正常に動作しますが (セッション Cookie を受け取ります)、私の Java クライアントでは動作しません。Java クライアントはSet-Cookie、応答ヘッダーのフィールドが であることを示していますnull

ほぼ間違いなく Java の問題です。(wireshark を使用して) ネットワーク トラフィックを調べたところ、Express.js Web サーバーが期待どおりに Cookie を提供していることがわかります。

次の Java コードがあります。

package mine;
import java.net.CookieHandler;
import java.net.CookieManager;
import java.net.HttpURLConnection;
import java.net.URL;

public class HttpsClient {

    public static void main(String[] args) throws Exception {

        CookieHandler.setDefault(new CookieManager());

        URL obj = new URL("http://localhost:8888");
        HttpURLConnection conn = (HttpURLConnection) obj.openConnection();

        String headerName=null;
        for (int i=1; (headerName = conn.getHeaderFieldKey(i)) != null; i++) {
            System.out.println(headerName + ": " + conn.getHeaderField(i));
        }        
    }
}

上記のコードからの出力:

X-Powered-By: Express
Content-Type: text/html; charset=utf-8
Content-Length: 4535
ETag: "309029400"
Set-Cookie: null
Date: Wed, 28 Aug 2013 04:40:25 GMT
Connection: keep-alive

以下は、express.js / node.js コードです。

var express     = require('express');
var app         = express();
var mongoStore  = require('connect-mongo')(express);

app.configure(function(){

    app.use(express.logger());
    app.use(express.bodyParser());
    app.use(express.cookieParser());
    app.use(express.errorHandler());

    app.use(express.session({
        store: new mongoStore({
            url: 'mongodb://localhost:27017/sessions'
        }),
        secret: 'asdasdfasdfasdfasdfa',
        maxAge  : new Date(Date.now() + 24*3600*1000 * 365),
        expires : new Date(Date.now() + 24*3600*1000 * 365)
    }));
    app.use(express.methodOverride());

});

app.get('/', function(req, res) {
    res.send('ok', 200);
});


var http        = require('http');
http.createServer(app).listen(8888, function(){
    console.log('Express server listening on port ' + 8888);
});

ここで何か不足していますか?Java には、セッション Cookie を処理する別の方法がありますか?

4

0 に答える 0