我有一个http功能,只有某些用户可以访问,但是由于某些原因,当尝试通过浏览器访问此功能时,Google登录页面没有显示。
我可以看到控制台中有一个CORS错误:
Cross-Origin Read Blocking (CORB) blocked cross-origin response https://uc.appengine.google.com/_ah/loginform?state=~AJKiYcF8K-nwxdM2Ubrwye8NlIUqgRXpZaYPWgXWmuQz8GuLLMz0Pp24ZZbQLv-OQos-CqD9gYdCIaQXHV7LZ0Ub1NlIxiZuOhORLsEFD_3HPKaTDdNzsX8WJVon09WhyybHJTZmcH2jmcnCNBf7WcsJ7V73NnbEYOSqeWLpINZa4nRbrqTg3HEr-QLMwUjL3VIrkmTxKCK4MJYdUUKaqunIcSBjDnKbnLC58rkwaHiYqcpiMYWPfpp1jfGU_1civWIyIuf4K_4k4Pq0ixm4IUpQfLcxYI928sXMTdhhGT8aDQr5BndoyBfWctnIUeKUlg9FQJIAXX5Ywx6ETfMQgG4PmUQNtbZ0SQ with MIME type text/html. See https://www.chromestatus.com/feature/5629709824032768 for more details.
这是功能代码:
app.use(cors({ origin: true }));
app.get('/all-users', async (request, response) => {
const dbRef = admin.database();
const usersSnapshot = await dbRef.ref('/Users/').once('value');
const fields = ['firstName', 'lastName', 'ethnicity', 'otherEthnicity', 'dob', 'gender', 'email', 'friendCode'];
const options = { fields };
const report = [];
usersSnapshot.forEach((userSnapshot) => {
const user = userSnapshot.val();
report.push(user);
});
const csv = parse(report, options);
const date = moment().tz(timezone).startOf('day').format('DDMMYYYY').toString();
response.setHeader(
"Content-disposition",
`attachment; filename=UserReport-${date}.csv`
);
response.set("Content-Type", "text/csv");
return response.status(200).send(csv);
});
有人知道如何解决此问题吗?如果将其设置为public,则该功能可以正常工作。
答案 0 :(得分:0)
根据本文档here:
跨源读取阻止(CORB)是一种算法,可以在Web浏览器访问网页之前识别并阻止可疑的跨域资源加载。 CORB通过使敏感数据远离跨源网页来降低泄露敏感数据的风险。
此功能的开发者Chromium Developers表示此错误通常不会影响网站,但是,如果存在此错误,则可以使用下面的代码来启动Chrome尝试它:
--disable-features=CrossSiteDocumentBlockingAlways,CrossSiteDocumentBlockingIfIsolating
在确实得到确认的情况下,他们建议您向他们举起Chromium Bug,以便他们进行检查。
让我知道信息是否对您有帮助!