我们目前遇到了客户端/api cookie生成错误。我们使用Angular 12和NGINX作为前端服务器,在cms.domain.co.uk的子域上运行SSL;后端在api.domain.co的子域上运行node.js和pm2。uk:3067 with SSL
我们的后端nodejs文件有以下CORS选项片段:
const app = express();
app.use(express.json());
app.use(cookieParser());
app.use(cors({
origin: 'https://cms.domain.cloud',
credentials: true,
methods: 'GET, POST, OPTIONS',
allowedHeaders: 'Origin, Content-Type, X-Auth-Token, Set-Cookie, Authorisation, Accept'
}));
我们在node.js文件中设置cookie如下:
response.cookie('LoginCookie', sid, {httpOnly: true, secure: true, SameSite: "none"});
我们已经尝试了所有可行的来源,标签和政策组合,现在我们正式被难住了。请原谅我们在CORS上的幼稚,因为我们来自非交叉起源的背景。
来自服务器的响应头包含set-cookie标签,但cookie没有在浏览器中设置,允许凭证控件在POST和OPTIONS中设置为true,以及设置origin以避免CORS错误。
这是发送的飞行前选项标头:
1
这是与Set-Cookie标签一起发送的POST报头:
2
通过使用chrome.exe——user-data-dir="C:/chrome dev session"——disable-web-security,浏览器承认cookie在一个部分的存在,但不承认另一个部分的存在:
3
任何反馈或帮助将非常感激!谢谢!
另一种方法是检索' loginccookie '密钥Set-Cookie头的值,并通过document.cookie.setItem( 'LoginCookie', <data>)
将其存储到浏览器