私はこれで迷っていることを知るのに十分なほど読んでいます。他のスレッドの解決策は役に立たないようです。
apps .samedomain.com の Node サイトで mandrill API を呼び出すページ.samedomain.comにページがあります。ORM を使用すると、テーブル ルートを介して問題なく書き込むことができます。テーブルが書き込まれ、ページが確認を受け取った後、メール ルートに送信されるはずです。ローカルで実行すると、どちらも正常に動作します。展開すると...
XMLHttpRequest はhttp://apps.samedomain.com/.../.../mail/4847775376401843を読み込めません。要求されたリソースに「Access-Control-Allow-Origin」ヘッダーがありません。したがって、オリジン ' http://pages.samedomain.com ' へのアクセスは許可されません。応答の HTTP ステータス コードは 502 でした。
私のapp.jsには...
var cors = require('cors');
app.use(cors());
私のルートファイルには...
module.exports = function(appRouter) {
var mandrill = require('mandrill-api/mandrill');
var mandrill_client = new mandrill.Mandrill(process.env.MANDRILL_API_KEY);
appRouter.route('/.../mail/:first_list_id').post(function(req,res){
req.models.know_me_2016
.find({list_id:req.params.first_list_id})
.run(function(err, results){
if (err) {
res.send(err);
} else {
var template_content = [{
"recipient": <stuff> ,
"content": <stuff>
}];
var message = {
<mandrill message object stuff>
};
}
mandrill_client.messages.sendTemplate({
"template_name": <template-name>,
"template_content": template_content,
"message": message}, function(result) {
console.log(result);
//I tried adding header stuff but it didn't help, maybe in wrong place? I thought CORS library was going to take care of this part?
res.header("Access-Control-Allow-Origin", "http://interactives.dallasnews.com");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
//It sends successfully when run local
res.send("Email sent successfully");
}, function(e) {
// Mandrill returns the error as an object with name and message keys
console.log('A mandrill error occurred: ' + e.name + ' - ' + e.message);
// A mandrill error occurred: Unknown_Subaccount - No subaccount exists with the id 'customer-123'
});
});
});
}
Mandrill キーは、すべての IP を受け入れるように設定されています。
任意の洞察をいただければ幸いです。