0
我寫了一個很簡單的node.js服務器:Node.js表示:爲什麼我不能讀取cookie?
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」,並向端點localhost:3000/ajax發送AJAX請求。我的意圖是閱讀服務器中cookie的內容(我知道cookies是從客戶端自動發送的)。但是,req.cookies [「username」]返回未定義。
你知道爲什麼嗎?
您沒有指定cookie的有效位置的路徑,所以它可能不適用於路徑'/ ajax'。使用瀏覽器開發工具來驗證cookie的路徑是什麼。 – CBroe