У меня этот код работает на localhost (отправка не вызывает проблем, только express -rate-limit), но когда я развертываю / pu sh его в моем приложении heroku и делаю почтовый запрос, он превышает максимальный предел который равен 3.
const router = require('express').Router();
const nodemailer = require('nodemailer');
const rateLimit = require("express-rate-limit");
const apiLimit = rateLimit({
windowMs: 24 * 60 * 60 * 1000, // 24 hrs
max: 3, // limit each IP to 3 requests per windowMs
message: "Spam detected!"
});
router.route('/').post(apiLimit,(req, res) => {
const transport = nodemailer.createTransport({
service: 'gmail',
host : "smtp.gmail.com",
port : "465",
ssl : true,
auth: {
user: process.env.USER,
pass: process.env.PASS
}
});
const mailOptions = {
from: '',
to: '<myemail>',
subject: req.body.subject,
text: "FROM: "+ req.body.email + " MESSAGE: " + req.body.message
};
transport.sendMail(mailOptions, (err, info) => {
err ? res.json(res.status(400).json("Error " + err)) : res.json("Email sent.");
});
});
module.exports = router ;
, обслуживающий локальный хост, работает, когда я запрашиваю более 3 раз, он возвращает сообщение об обнаружении спама и больше не отправляет почту. когда я использую расширение rest api на vscode, это показывает. X-Ratelimit-Remaining: 2
не изменится, если я сделаю еще несколько почтовых запросов.
HTTP/1.1 200 OK
Server: Cowboy
Connection: close
X-Powered-By: Express
Access-Control-Allow-Origin: *
X-Ratelimit-Limit: 3
X-Ratelimit-Remaining: 2
Date: Sun, 21 Jun 2020 03:09:11 GMT
X-Ratelimit-Reset: 1592793933
Content-Type: application/json; charset=utf-8
Content-Length: 13
Etag: W/"d-EBrE0f9LbjD0DZTwvOVLMa8Lqo8"
Via: 1.1 vegur
"Email sent."