req.cookies 为空,我不知道为什么
req.cookies is null and I don't know why
我看过一些以前的堆栈溢出帖子,但无法弄清楚为什么会这样。
我在我的所有路由之前都包含了 cookie 解析器,并且 cookie 在浏览器中。出于某种原因,我无法访问它。
const cookieParser = require("cookie-parser");
const cors = require("cors");
const AppError = require("./utils/appError");
const globalErrorHandler = require("./controllers/errorController");
const dishRouter = require("./routes/dishRoutes");
const userRouter = require("./routes/userRoutes");
const orderRouter = require("./routes/orderRoutes");
const imageRouter = require("./routes/imageRouter");
const app = express();
app.use(cookieParser());
app.enable("trust proxy");
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(cors());
app.options("*", cors());
路线...
这是我访问 req.cookies
的方式
首先我调用了 axios
axios({
method: "patch",
url: `http://localhost:8080/api/v1/users/me`,
data: this.state,
})
然后通过这个中间件
router
.route("/me")
.patch(authController.protect, userController.updateProfile)
在 authController.protect 中,我执行以下操作
try {
//1) Getting token and check if it exists.
let token;
if (
//POSTMAN
req.headers.authorization &&
req.headers.authorization.startsWith("Bearer")
) {
token = req.headers.authorization.split(" ")[1];
} else if (req.cookies.jwt) {
token = req.cookies.jwt;
}
console.log(`TOKEN: ${token}`);
console.log(req.cookies);
上面的 console.log 给出了 null。
我的代码遇到了类似的问题,我在检查 req.cookies 时得到了 null。我为我的 node.js 文件使用了 express,并遵循了以下链接的解释:
- http://expressjs.com/en/resources/middleware/cors.html
- https://developers.google.com/web/updates/2015/03/introduction-to-fetch
所以从服务器端我将配置添加到 cors()
并设置 credentials: true
并且在客户端从我的 fetch()
请求我添加了 credentials: 'include'
这让我可以访问我浏览器上的 cookie。我的 fetch()
请求使用了 PUT 方法。
我看过一些以前的堆栈溢出帖子,但无法弄清楚为什么会这样。
我在我的所有路由之前都包含了 cookie 解析器,并且 cookie 在浏览器中。出于某种原因,我无法访问它。
const cookieParser = require("cookie-parser");
const cors = require("cors");
const AppError = require("./utils/appError");
const globalErrorHandler = require("./controllers/errorController");
const dishRouter = require("./routes/dishRoutes");
const userRouter = require("./routes/userRoutes");
const orderRouter = require("./routes/orderRoutes");
const imageRouter = require("./routes/imageRouter");
const app = express();
app.use(cookieParser());
app.enable("trust proxy");
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(cors());
app.options("*", cors());
路线...
这是我访问 req.cookies
的方式首先我调用了 axios
axios({
method: "patch",
url: `http://localhost:8080/api/v1/users/me`,
data: this.state,
})
然后通过这个中间件
router
.route("/me")
.patch(authController.protect, userController.updateProfile)
在 authController.protect 中,我执行以下操作
try {
//1) Getting token and check if it exists.
let token;
if (
//POSTMAN
req.headers.authorization &&
req.headers.authorization.startsWith("Bearer")
) {
token = req.headers.authorization.split(" ")[1];
} else if (req.cookies.jwt) {
token = req.cookies.jwt;
}
console.log(`TOKEN: ${token}`);
console.log(req.cookies);
上面的 console.log 给出了 null。
我的代码遇到了类似的问题,我在检查 req.cookies 时得到了 null。我为我的 node.js 文件使用了 express,并遵循了以下链接的解释:
- http://expressjs.com/en/resources/middleware/cors.html
- https://developers.google.com/web/updates/2015/03/introduction-to-fetch
所以从服务器端我将配置添加到 cors()
并设置 credentials: true
并且在客户端从我的 fetch()
请求我添加了 credentials: 'include'
这让我可以访问我浏览器上的 cookie。我的 fetch()
请求使用了 PUT 方法。