XMLHttpRequest 'Access-Control-Allow-Origin'...当请求的凭据模式为 'include' 时,响应不能是通配符 '*'
Posted
技术标签:
【中文标题】XMLHttpRequest \'Access-Control-Allow-Origin\'...当请求的凭据模式为 \'include\' 时,响应不能是通配符 \'*\'【英文标题】:XMLHttpRequest 'Access-Control-Allow-Origin'... the response must not be the wildcard '*' when the request's credentials mode is 'include'XMLHttpRequest 'Access-Control-Allow-Origin'...当请求的凭据模式为 'include' 时,响应不能是通配符 '*' 【发布时间】:2020-11-10 19:58:12 【问题描述】:我在后端使用带有云功能的 Express Js,在前端使用 Angular。我尝试了在 *** 上发布的几种解决方案,但没有任何变化。 这是我的后端代码
const app = express();
const main = express();
main.use('/v1', app);
main.use(bodyParser.json());
main.use(bodyParser.urlencoded( extended: false ));
// ROUTES
app.get('/posts/:postId', function(req, res, next)
res.set('Access-Control-Allow-Origin', '*');
res.set('Access-Control-Allow-Methods', 'GET, PUT, POST, OPTIONS');
res.set('Access-Control-Allow-Headers', '*');
if (req.method === 'OPTIONS')
// Send response to OPTIONS requests
res.set('Access-Control-Allow-Methods', 'GET');
res.set('Access-Control-Allow-Headers', 'Content-Type');
res.set('Access-Control-Max-Age', '3600');
return next();
else
return next();
, function(req, res)
firebaseHelper.firestore.getDocument(db, 'posts', req.params.postId).then(
(doc) => res.status(200).send(doc),
(err) => res.status(400).send('error about getting post')); );
角度代码
onGetPost(postId)
const header = new HttpHeaders( 'application/json' );
const option = headers: header;
this.subscription = this.http.get(`https://my-url.web.app/v1/post/$postId`,
option).subscribe(
(data: any[]) => this.post.next(data); resolve('ok'); ,
(err) => reject(err)
);
提前感谢您的帮助
【问题讨论】:
【参考方案1】:你确定你没有发送请求
withCredentials: true
? (您可能定义了拦截器以将其添加到请求中)如果是这样,则在不需要时将其删除。
否则,请将您的来源设置在后端以反映前端的来源。见this detailed answer for more information
【讨论】:
以上是关于XMLHttpRequest 'Access-Control-Allow-Origin'...当请求的凭据模式为 'include' 时,响应不能是通配符 '*'的主要内容,如果未能解决你的问题,请参考以下文章
访问 XMLHttpRequest 时访问 XMLHttpRequest 已被 CORS 策略阻止
XMLHTTPRequest 错误:不推荐使用主线程上的同步 XMLHttpRequest ...(SoundCloud API)