同一域中的CORS问题

时间:2018-08-10 05:46:26

标签: javascript node.js cors same-origin-policy

我有一个在my-dev.abc.com中运行的应用程序,例如“ abc”域中的URL。 (abc不是真正的域名,用于说明问题)。

当我尝试从上述应用程序访问应用程序portal.abc.com时,我在开发人员控制台中收到以下错误消息,并且重定向不会发生。

Failed to load https://portal.abc.com/: Redirect from 'https://portal.abc.com/' to 'https://portal.abc.com/Account/Login?ReturnUrl=%2f' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://my-dev.abc.com' is therefore not allowed access.

即使两个应用程序使用相同的域名,为什么也会发生此CORS错误?如何解决呢?这种重定向是从Nodejs方面进行的。客户端使用angularjs。 NodeJ的重定向代码段如下所示,

function redirectApp(req, res) {
    res.clearCookie(COOKIES.USER_NAME);
    res.clearCookie(COOKIES.ROLES);
    res.clearCookie(COOKIES.EMPLOYEE_ID);
    res.redirect('https://portal.abc.com');
}

1 个答案:

答案 0 :(得分:1)

如果您使用的是Express,请尝试设置允许主机启用访问控制的django,我也遇到了同样的问题,并花了数小时试图解决。

app.use(function(req, res, next) {
  var allowedOrigins = ['http://localhost:9000'];
  var origin = req.headers.origin;
  if(allowedOrigins.indexOf(origin) > -1){
       res.setHeader('Access-Control-Allow-Origin', origin);
  }
  res.header('Access-Control-Allow-Methods', 'GET, OPTIONS');
  res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization');
  res.header('Access-Control-Allow-Credentials', true);
  return next();
});