如何在解耦的前端和后端中为每个请求发送仅 http cookie(包含 jwt)?
How to send http only cookies(containing jwt) with every request in decoupled frontend and backend?
如何在解耦的前端和后端中为每个请求发送仅 http cookie?我的前端和后端是通过 heroku 部署的,前端在这里 :- https://chatapp-client-12345.herokuapp.com/
后端在这里 :- https://chatappbackend12345.herokuapp.com/
我想将我的 http only cookie(包含 jwt)发送到我的后端,以及我在后端设置的每个请求,如下所示:-
// generate jwt
let jwtToken = jwt.sign({
email:email,
userId:userData._id
},"somesupersecret");
res.cookie("jwtToken",jwtToken,{
expires:new Date(Date.now() + 3600000),
httpOnly:true,
domain:"chatapp-client-12345.herokuapp.com"
});
但前端未设置 http only cookie
通过研究得知我只能在同一个域访问cookie,但是前后端解耦了怎么办?
我的后端基于使用 rest api 构建的节点 js,前端包含简单的 html css js 服务于节点 js
假设您的域是 https://chatappbackend12345.herokuapp.com/,您只能在两个域上设置 cookie:
(1) 确切域和子域:
chatappbackend12345.herokuapp.com
(2) 根域:
.herokuapp.com
对于你的情况,你的前端和后端的域是不同的,这意味着cookies永远无法同时被双方访问。
也不太可能(或不可行)将 cookie 设置为根域,因为您很难相信来自不属于您的网站的 cookie。
域和解耦是分开的概念。您可以拥有相同的域,而前端和后端应用程序保持解耦。
实现它的一种方法是通过反向代理(参考:nginx reverse proxy)。您可以在前端和后端之上添加一个反向代理,将它们路由到同一个域。
例如,在您自己的域下,您可以使用以下路由策略制作您的反向代理应用程序:
https://chatappbackend12345.herokuapp.com/login: 后台应用
https://chatappbackend12345.herokuapp.com/* : 前端应用
对于这种情况,您的服务器可以在客户端设置 cookie,同时两个应用程序保持解耦。
有关cookies政策的更多信息,请查看rfc6265。
如何在解耦的前端和后端中为每个请求发送仅 http cookie?我的前端和后端是通过 heroku 部署的,前端在这里 :- https://chatapp-client-12345.herokuapp.com/
后端在这里 :- https://chatappbackend12345.herokuapp.com/
我想将我的 http only cookie(包含 jwt)发送到我的后端,以及我在后端设置的每个请求,如下所示:-
// generate jwt
let jwtToken = jwt.sign({
email:email,
userId:userData._id
},"somesupersecret");
res.cookie("jwtToken",jwtToken,{
expires:new Date(Date.now() + 3600000),
httpOnly:true,
domain:"chatapp-client-12345.herokuapp.com"
});
但前端未设置 http only cookie
通过研究得知我只能在同一个域访问cookie,但是前后端解耦了怎么办?
我的后端基于使用 rest api 构建的节点 js,前端包含简单的 html css js 服务于节点 js
假设您的域是 https://chatappbackend12345.herokuapp.com/,您只能在两个域上设置 cookie:
(1) 确切域和子域:
chatappbackend12345.herokuapp.com
(2) 根域:
.herokuapp.com
对于你的情况,你的前端和后端的域是不同的,这意味着cookies永远无法同时被双方访问。
也不太可能(或不可行)将 cookie 设置为根域,因为您很难相信来自不属于您的网站的 cookie。
域和解耦是分开的概念。您可以拥有相同的域,而前端和后端应用程序保持解耦。
实现它的一种方法是通过反向代理(参考:nginx reverse proxy)。您可以在前端和后端之上添加一个反向代理,将它们路由到同一个域。
例如,在您自己的域下,您可以使用以下路由策略制作您的反向代理应用程序:
https://chatappbackend12345.herokuapp.com/login: 后台应用 https://chatappbackend12345.herokuapp.com/* : 前端应用
对于这种情况,您的服务器可以在客户端设置 cookie,同时两个应用程序保持解耦。
有关cookies政策的更多信息,请查看rfc6265。