我正在使用Web应用程序,后端和前端都托管在内部PaaS的不同终结点上,如果传入的任何请求都没有经过身份验证的cookie,它将重定向到SSO页面。
当我从前端向后端发送GET请求时,它也会通过cookie(带有axios中的凭据)。但是,当我发出POST请求时,浏览器首先发出没有cookie的预检OPTIONS请求,并且内部后端服务重定向到SSO,因此它根本无法发送POST请求。
设计前的飞行前请求不包含用户凭据,我该如何解决?
答案 0 :(得分:1)
在您的后端中编写一个中间件,在层次结构的顶部,并检查其中的请求类型。
如果是“ OPTIONS”,则只需验证原点,如果熟悉则立即用200响应,而不是将控制权传递给next,否则请返回403
如果不是“ OPTIONS”,则将控件传递给next,以便它进行相应处理
假设一个节点表达服务器,中间件看起来像这样
app.use((req,res,next)=>{
if(req.method==='OPTIONS' && whiteListUrls.includes(req.origin)){
res.status(200);
}else{
next();
}
})