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!
任何帮助将非常感激!
| 归档时间: |
|
| 查看次数: |
2857 次 |
| 最近记录: |