Mandrill XMLHttpRequest错误 - 无效的Access-Control-Allow-Origin标头

时间:2016-01-24 15:23:21

标签: javascript express heroku cors mandrill

我在http://random-name.herokuapp.com的Heroku上有一个应用程序,用于向Mandrill发送电子邮件。但是,无论我是在localhost:5000本地运行应用程序还是在Heroku上远程运行应用程序,我在尝试发送电子邮件时都会抛出以下错误:

  

XMLHttpRequest无法加载   https://mandrillapp.com/api/1.0/messages/send.json。回应   预检请求未通过访问控制检查:通配符' *'   不能用于“访问控制 - 允许 - 来源”#39;标题时   凭证标志是真的。起源' http://random-name.herokuapp.com'是   因此不允许访问。

关于此错误的Stack Overflow上有很多文档(请参阅CORS: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true),因此,我将快速标题设置为以下内容:

app.use(function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "http://localhost:5000 http://random-name.herokuapp.com");
  res.header('Access-Control-Allow-Credentials', true);
  res.header("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS");
  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
  next();
});

但是,这似乎无法解决问题。我也无法在Mandrill的文档中找到任何有用的东西。我猜测我没有错误地指定标题,或者它们甚至没有被使用。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

Access-Control-Allow-Origin采用单个值,而不是以空格分隔的列表。

您需要返回客户端在Origin请求标头中发送的任何内容(测试以确保首先是您可接受的来源!)。