Con*_*ght 5 node.js express reactjs
我这里可能有误解。
我有一个运行在 的节点服务器localhost:3000,以及一个运行在 的 React 应用程序localhost:8080。
React 应用程序正在get向节点服务器发出请求 - 我的服务器代码如下所示:
const cookieParser = require('cookie-parser');
const crypto = require('crypto');
const express = require('express');
const app = express();
app.use(cookieParser());
app.get('/', function (req, res) {
let user_token = req.cookies['house_user']; // always empty
if (user_token) {
// if the token exists, great!
} else {
crypto.randomBytes(24, function(err, buffer) {
let token = buffer.toString('hex');
res.setHeader('Access-Control-Allow-Origin', 'http://localhost:8080');
res.cookie('house_user', token, {maxAge: 9000000000, httpOnly: true, secure: false });
res.send(token);
});
}
});
app.listen(3000, () => console.log('Example app listening on port 3000!'))
Run Code Online (Sandbox Code Playgroud)
我正在尝试设置house_user令牌,以便稍后可以跟踪用户的请求。
但是,未在用户上设置令牌(来自 的请求localhost:8080) -house_user令牌始终为空(事实上,req.cookies完全为空)。我还需要做其他事情吗?
我刚刚尝试了下面的代码(并且它有效)。提醒一下,您可以将其粘贴到 myNodeTest.js 中,然后运行node myNodeTest.js并访问http://localhost:3003。如果它确实有效,那么可能意味着您遇到了 CORS 问题。
[编辑] withCredentials:true 应该可以用 axios 解决这个问题。
axios.get('localhost:3000', {withCredentials: true}).then(function (res) { console.log(res) })
Run Code Online (Sandbox Code Playgroud)
const express = require('express')
const cookieParser = require('cookie-parser')
const crypto = require('crypto');
const port = 3003
app.use(cookieParser());
app.get('/', function (req, res) {
let user_token = req.cookies['house_user']; // always empty
if (user_token) {
// if the token exists, great!
} else {
crypto.randomBytes(24, function(err, buffer) {
let token = buffer.toString('hex');
res.setHeader('Access-Control-Allow-Origin', 'http://localhost:8080');
res.cookie('house_user', token, {maxAge: 9000000000, httpOnly: true, secure: true });
res.append('Set-Cookie', 'house_user=' + token + ';');
res.send(token);
});
}
});
app.get('/', (request, response) => {
response.send('Hello from Express!')
})
app.listen(port, (err) => {
if (err) {
return console.log('something bad happened', err)
}
console.log(`server is listening on ${port}`)
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14254 次 |
| 最近记录: |