Node Express-Session 和 React 前端不使用 Axios 存储 Cookie

Wha*_*tty 5 cookies node.js reactjs express-session axios

这里是 Web 开发人员同事。我似乎遇到了这个问题(直到最近才发生),其中 cookie 会话 ID 在每个 API 请求上都会更改。

编辑确认可以在 IE11 和 Edge 中工作!?不是乔姆?!卧槽!不适用于获取和凭据:“包含”也..

我有一个可以安全登录的网站,但是现在有些人由于 cookie 未存储在浏览器中而无法登录。奇怪的是,直到最近 Chrome 才发生这种情况!我不确定发生了什么或发生了什么变化..

在网络标头中,服务器返回一个 Set-Cookie 标头,因此后端似乎正在工作。

下面是一个代码示例,不适用于我的前端(React w/ Axios)。我的前端在我的 Mac 主机上运行,​​节点服务器在 Windows 笔记本电脑上运行。

我已经尝试过 app.set 信任代理(已注释掉),但这似乎没有改变任何东西。另外,我一直在四处搜索并尝试了一些与该域有关的东西,但我似乎找不到任何有效的东西。我正在localhost上进行测试,后端的 URL 与前端不同。这会是域/CORS 配置的问题吗?

节点服务器

const session = require('express-session')
const cors = require('cors')

const app = express()
app.use(express.json())
app.use(cors({ credentials: true, origin: ['http://localhost:3000', 'http://192.168.100.122'] }))

// app.set('trust proxy', 1)
app.use(session({
    secret: 'SECRET_KEY_HEEEE',
    resave: false,
    proxy: true,
    saveUninitialized: true,
    // Being tested via local IP Address, this would change to secure in prod
    cookie: { secure: false, httpOnly: false, maxAge: 600000 }
}))

app.get('/', (req, res) => {
    console.log(req.sessionID)
    // Session ID changes every time I hit this request
    if (req.session.views) {
        req.session.views++
        res.send(req.session.views.toString())
    } else {
        req.session.views = 1
        res.send('Started View Count!')
    }
})

app.listen(5050, _ => console.log('Getting smacked on port 5050'))
Run Code Online (Sandbox Code Playgroud)

React 前端 w/ Axios & withCredentials = true

import axios from 'axios'

axios.defaults.withCredentials = true

class App extends Component {

handleGetCookie = () => { 
        axios.get('http://192.168.100.131:5050/').then(response => {                     
    console.log(response.data) 
    // Response.data only shows "Started View Count"
    }) 
}

render() { 
    return (
         <div className="App">
             <h1>Express Sessions & MongoDB!</h1>
             <button onClick={this.handleGetCookie}>Get me a cookie!</button>
         </div>
    )
  }
}

export default App
Run Code Online (Sandbox Code Playgroud)

我尝试更改 withCredentials 以包含同源,但没有任何变化......

我的浏览器设置中启用了 Cookie 和第 3 方 Cookie!

任何帮助将非常感激!