I具有nodejs后端的React-App应用程序,该App-s后端通过使用httponly cookie来处理身份验证/授权。 我创建了一个静态站点并将其部署在Nodejs Backend应用程序上,并且可以解决LocalHost,但不能使用我的本地网络IP地址。 当我使用网络IP地址时,cookie是在浏览器中创建的,但每个请求不会发送到服务器
在此处使用的代码是后端使用的代码:
...
res.cookie("myAppjwt", token, {
httpOnly: true,
sameSite: "None",
secure: true,
maxAge: 24 * 60 * 60 * 1000,
});
...
const app = express();
const allowedOrigins = [
"http://127.0.0.1:8003",
"http://localhost:8003",
"http://MY_NETWOK_IP:8003",
];
app.use((req, res, next) => {
const origin = req.headers.origin;
if (allowedOrigins.includes(origin)) {
res.header("Access-Control-Allow-Credentials", true);
}
next();
});
app.use(
cors({
origin: allowedOrigins,
credentials: "true",
})
);
...
the the前端使用的代码是:
...
const response = await axios.get(API_URL,{ withCredentials: true });
...
secure
。意味着cookie只能通过安全连接发送,即
https://
。
浏览器对Localhost有一个例外,并通过HTTP发送安全的cookie,只是为了使我们的开发人员的生活更轻松。但是,当您使用IP地址时,浏览器对真实域的行为会像实际域一样行为。 您可以在这里阅读更多有关它的信息:https://developer.mozilla.org/en-us/docs/web/http/cookies#block_access_to_your_cookies