私は非常に単純なのNode.jsサーバーを書いた:Node.js express:なぜクッキーを読むことができないのですか?
var express = require('express');
var cookieParser = require("cookie-parser");
var app = express();
app.use(cookieParser());
app.get('/', function(req, res){
res.sendFile(__dirname + "/hello.html");
});
app.get('/ajax', function(req, res) {
console.log('ajax request received');
console.log(req.cookies["username"])
})
app.listen(3000);
と非常にシンプルなクライアント側のhtmlファイル:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1> Hello World </h1>
<script
src="https://code.jquery.com/jquery-3.2.1.min.js"
integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4="
crossorigin="anonymous"></script>
<script>
document.cookie = "username=John Doe";
$.ajax({
url: "http://127.0.0.1:3000/ajax",
}).done(function() {
alert('AJAX sent');
});
</script>
</body>
</html>
あなたが理解できるように、サーバが実行され、エンドユーザーが送信した後localhost:3000へのリクエストを取得すると、ファイル 'hello.html'がクライアントに提供されます。ブラウザはcookie "username = John Doe"を保存し、AJAX要求をエンドポイントlocalhost:3000/ajaxに送信します。私の意図は、サーバー内のクッキーの内容を読み取ることです(クッキーはクライアントから自動的に送信されます)。しかし、req.cookies ["username"]は未定義を返します。
あなたはその理由を知っていますか?
あなたはあなたのクッキーが有効であるべき場所のためのパスを指定していないので、単純にパス '/ ajax'には適用できないかもしれません。あなたのブラウザのdevツールを使って、クッキーのパスを確認してください。 – CBroe