【问题标题】:CORS issue in same domain [duplicate]同一域中的 CORS 问题 [重复]
【发布时间】:2019-01-17 16:05:12
【问题描述】:

我有一个在 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。 NodeJs重定向代码sn-p如下图,

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

【问题讨论】:

  • 子域不被视为同一个域,这是有充分理由的。
  • 在组成问题中使用的域时,使用example.com

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


【解决方案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();
});

【讨论】:

  • 这应该在portal.abc.com 应用程序或my-dev.abc.com 应用程序中执行吗?
  • 在允许的主机中添加您的应用程序域!在你的情况下 my-dev.abc.com
  • 我的应用程序是 my-dev.abc.com ,我正在尝试重定向到 portal.abc.com 。我需要将 my-dev.abc.com 添加为 portal.abc.com 中的允许主机。我在吗?
  • 是的!这就是你需要做的
猜你喜欢
  • 2019-03-31
  • 2021-11-22
  • 2016-09-20
  • 2019-08-22
  • 2017-10-09
  • 1970-01-01
  • 2022-12-18
  • 2018-12-10
  • 2019-09-16
相关资源
最近更新 更多