这里的资深Web开发人员。我似乎遇到了这个问题(直到最近才出现),其中每个API请求的Cookie会话ID都会更改。
编辑确认可以在IE11和Edge中工作!?不是乔姆? WTF!不适用于提取和凭证:也包括“ include”。.
我有一个具有安全登录名的网站,但是由于Cookie未存储在他们的浏览器中,现在有些人无法登录。奇怪的是,直到最近Chrome才发生这种情况!我不确定发生了什么或发生了什么变化。.
在网络标头中,服务器返回了一个Set-Cookie标头,因此后端似乎可以正常工作。
下面是一个代码示例,不适用于我的前端(React w / Axios)。我的前端在我的Mac主计算机上运行,而节点服务器在Windows笔记本电脑上运行。
我已经尝试过app.set信任代理(已注释掉),但这似乎没有任何改变。 另外,我一直在搜索该域名,并尝试了一些方法,但是似乎找不到任何有效的方法。我正在 localhost ,上进行测试,并且后端具有与前端不同的URL。这是否是domain / 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'))
带有Axios和withCredentials = true的Reactive Frontend
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
我尝试将withCredentials更改为包含相同来源,但没有任何变化...
在我的浏览器设置中启用了cookie和3rd Party cookie!
任何帮助将不胜感激!