CORS发行vue/express/axios
我有一个VueJS应用程序使用ExpressJS api。试图从前端登录页表单点击快速路线,通过SendGrid发送“联系我们”电子邮件,但在heroku上的生产中出现代理错误 以下是我的组件中的方法:CORS发行vue/express/axios,express,heroku,axios,cors,Express,Heroku,Axios,Cors,我有一个VueJS应用程序使用ExpressJS api。试图从前端登录页表单点击快速路线,通过SendGrid发送“联系我们”电子邮件,但在heroku上的生产中出现代理错误 以下是我的组件中的方法: async sendContactMessage() { console.log('email valid? ', this.validateEmail(this.contactEmail)) if (!this.validateEmail(this.contactEm
async sendContactMessage() {
console.log('email valid? ', this.validateEmail(this.contactEmail))
if (!this.validateEmail(this.contactEmail)) {
this.contactNotice = "Please enter a valid email."
}
else if (this.contactMessage.length < 10) {
this.contactNotice = " The message is too short"
} else {
await MailersService.sendMessage({
email: this.contactEmail,
message: this.contactMessage
})
this.showContact = false
}
},
在快车方面,以下是我发布的路线:
router.post('/question', async (req, res, next) => {
console.log('in Express, sending mail from contact form. this is request: ', req)
let newMessage = req.body
console.log("new message object is: ", newMessage)
const msg = {
to: 'contact@companydomain.com',
from: req.body.email, // Use the email address or domain you verified above
subject: 'Message from Beta Signup Form',
text: req.body.message
};
await sgMail.send(msg);
res.json({
success: true, message: 'ok'
}); // respond back to request
});
在cors的app.js中,我有:
app.use(cors());
app.use( function (req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
next();
})
这在本地起作用,但在Heroku上,它抛出错误:
Access to XMLHttpRequest at 'https://...-api.herokuapp.com/api/contacts/question' from origin 'https://....com' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
您是否处理
选项
呼叫?听起来好像你没有处理,这导致它从来没有真正打过电话;非挥发性物质。这就是app.use(cors())的作用我想应该是这样的。奇怪。请参阅,然后尝试添加app.options('*',cors())
。尝试此操作时运气不佳。错误似乎表明这是需要从客户端提供的信息,对吗?您是否处理选项
调用?听起来好像你没有处理,这导致它从来没有真正打过电话;非挥发性物质。这就是app.use(cors())的作用我想应该是这样的。奇怪。请参阅,然后尝试添加app.options('*',cors())
。尝试此操作时运气不佳。错误似乎表明这是需要从客户端提供的东西,对吗?
Access to XMLHttpRequest at 'https://...-api.herokuapp.com/api/contacts/question' from origin 'https://....com' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.