即使我使用允许服务器上的所有来源,请求的资源上也没有“Access-Control-Allow-Origin”标头

Posted

技术标签:

【中文标题】即使我使用允许服务器上的所有来源,请求的资源上也没有“Access-Control-Allow-Origin”标头【英文标题】:No 'Access-Control-Allow-Origin' header is present on the requested resource even if I use allow all origins on server 【发布时间】:2019-07-26 16:48:10 【问题描述】:

我正在尝试将表单数据发布到我的 REST API。即使我允许所有来源,我也会收到一个 cors 错误:

从 'https://api.mydomain.com/route' 访问 XMLHttpRequest 来源“https://subdomain.mydomain.com”已被 CORS 策略阻止: 请求中不存在“Access-Control-Allow-Origin”标头 资源。

这是我的快递服务器上的中间件:

app.use((req, res, next) => 
  res.header("Access-Control-Allow-Origin", "*");

  res.header(
    "Access-Control-Allow-Methods",
    "POST"
  );

  res.header("Access-Control-Allow-Headers", "X-Requested-With,content-type");

  next();
);

这里有什么问题?

【问题讨论】:

app.use 写在 app.get('/') 之前? 是的,app.use 写在 app.post() 之前 【参考方案1】:

尝试在服务器https://subdomain.mydomain.com 的响应中添加标头

这在 Asp.net Web API 中对我有用

Response.AddHeader("Access-Control-Allow-Origin", "*");

【讨论】:

以上是关于即使我使用允许服务器上的所有来源,请求的资源上也没有“Access-Control-Allow-Origin”标头的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET WebApi 对 ValidateClientAuthentication 上的 OPTIONS 的 400 错误请求,即使在 context.Validated() 上也是如此

即使我允许所有来源,为啥我会收到 CORS 错误?

“cors header ‘access-control-allow-origin’ missing”拒绝请求,即使来源是允许的

CORS 策略阻止请求,即使访问允许来源设置为 *

AJAX CORS 请求来源被阻止 - Java Web 服务

即使在允许的 url 上也可以访问 Jwt 过滤器