You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PHP中获取Node.js应用发送的Cookie

PHP获取Node.js应用设置Cookie的方法

前置说明

你提供的Node.js示例代码存在两处问题,会导致Cookie无法被浏览器正常存储,后续PHP也无法读取:

  1. Set-Cookie 必须遵循键名=键值的格式,原代码仅写了type-test没有键值对,浏览器会直接忽略该Cookie
  2. new Date().getFullYear是方法引用,缺少执行括号,返回值为函数本体而非当前年份

步骤1:修正Node.js端Cookie设置

修正后的Node.js代码如下:

const express = require('express')
const app = express()
const port = 3000

app.get('/', (req, res) => {
    // 规范设置Cookie,指定Path=/保证同域名下所有路径都能访问该Cookie
    res.setHeader("Set-Cookie","type=test; Path=/; SameSite=Lax");
    // 修正getFullYear调用
    res.setHeader("Year",new Date().getFullYear());
    res.send('Hello World!')
})

app.listen(port, () => {
  console.log(`Example app listening at http://localhost:${port}`)
})

如果你的Node.js和PHP服务部署在不同子域名下,还需要在Set-Cookie中补充Domain配置,比如Domain=.example.com,这样两个子域名下的服务都能读取到该Cookie。

步骤2:PHP端读取Cookie

PHP内置了超全局变量$_COOKIE,可以直接读取浏览器携带的所有符合作用域规则的Cookie,示例代码如下:

<?php
// 先判断目标Cookie是否存在,避免抛出未定义索引警告
if (isset($_COOKIE['type'])) {
    $cookieValue = $_COOKIE['type'];
    echo "获取到Node.js设置的Cookie值:" . $cookieValue;
} else {
    echo "未找到对应的Cookie";
}
?>

注意事项

  • 你代码中设置的Year是自定义响应头,不属于Cookie,所以不会被浏览器存储,PHP也无法通过$_COOKIE读取到该值
  • 如果Node.js和PHP服务跨域,需要在Node.js端配置CORS规则允许携带凭证,同时前端请求时开启withCredentials配置,否则浏览器不会自动携带Cookie
  • 如果Cookie设置了HttpOnly属性,仅服务端可读取,前端JS无法操作,不影响PHP读取

内容的提问来源于stack exchange,提问作者Anuj Todankar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 11:45:05