同一域中的 CORS 问题
CORS issue in same domain
我有一个在 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重定向代码片段如下所示,
function redirectApp(req, res) {
res.clearCookie(COOKIES.USER_NAME);
res.clearCookie(COOKIES.ROLES);
res.clearCookie(COOKIES.EMPLOYEE_ID);
res.redirect('https://portal.abc.com');
}
如果您使用的是 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();
});
我有一个在 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重定向代码片段如下所示,
function redirectApp(req, res) {
res.clearCookie(COOKIES.USER_NAME);
res.clearCookie(COOKIES.ROLES);
res.clearCookie(COOKIES.EMPLOYEE_ID);
res.redirect('https://portal.abc.com');
}
如果您使用的是 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();
});