防止来自内部重定向的预检请求

时间:2019-09-24 11:48:53

标签: reactjs rest axios

我正在使用Web应用程序,后端和前端都托管在内部PaaS的不同终结点上,如果传入的任何请求都没有经过身份验证的cookie,它将重定向到SSO页面。

当我从前端向后端发送GET请求时,它也会通过cookie(带有axios中的凭据)。但是,当我发出POST请求时,浏览器首先发出没有cookie的预检OPTIONS请求,并且内部后端服务重定向到SSO,因此它根本无法发送POST请求。

设计前的飞行前请求不包含用户凭据,我该如何解决?

1 个答案:

答案 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();
  }
})