首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过react向mailchimp发送邮件请求

如何通过react向mailchimp发送邮件请求
EN

Stack Overflow用户
提问于 2019-08-08 14:38:59
回答 2查看 799关注 0票数 1

我正试图从表单中发送一个新成员,以响应我的快速服务器,将其添加到mailchimp成员列表中,我得到了一个cors错误,我不知道是否缺少任何代理程序。我希望用户能够注册react,然后将其发送到mailchimp数据库

我已取得议员名单,但我不能在名单上张贴:

这是我的特快后端:

代码语言:javascript
复制
const express = require('express');
const Mailchimp = require('mailchimp-api-v3');
require('dotenv').config();

var request = require('superagent');
var mc_api_key = process.env.REACT_APP_MAILCHIMP_API;
var list_id = process.env.REACT_APP_LIST_ID;

const app = express();

const mailchimp = new Mailchimp(mc_api_key);
const port = process.env.PORT || 5000;

// console.log that your server is up and running
app.listen(port, () => console.log(`Listening on port ${port}`));

app.use((request, response, next) => {
response.header("Access-Control-Allow-Origin", "*");
response.header("Access-Control-Allow-Headers", "Content-Type");
next();
});

// Routes
app.post('/signup', function (req, res) {
request
    .post('https://' + 'us20' + '.api.mailchimp.com/3.0/lists/' + list_id + '/members/')
    .set('Content-Type', 'application/json;charset=utf-8')
    .set('Authorization', 'Basic ' + new Buffer('any:' + mc_api_key ).toString('base64'))
    .send({
      'email_address': req.body.email,
      'status': 'subscribed',
      'merge_fields': {
        'FNAME': req.body.firstName,
        'LNAME': req.body.lastName
      }
    })
        .end(function(err, response) {
          if (response.status < 300 || (response.status === 400 && response.body.title === "Member Exists")) {
            res.send('Signed Up!');
          } else {
            res.send('Sign Up Failed :(');
              }
          });
});

这就是我试图在我的app.js文件中获取react的地方:

代码语言:javascript
复制
onSubmit = (e,email) => {
  e.preventDefault()
  this.setState({user:email})
  fetch('http://localhost:5000/signup',{
    method: 'POST',
    headers: {
      'Accept':'application/json',
      'Content-type':'application/json'
      },
    body: JSON.stringify({email_address: email, status: 'subscribed'})
  }).then(console.log)
};

当单击submit时,我希望成员的电子邮件地址被发送到mailchimp,而我得到的是这个错误:

从源“http://localhost:5000/signup”获取“http://localhost:3000”的访问已被CORS策略阻止:对飞行前请求的响应不通过访问控制检查:请求资源上不存在“访问控制-允许-原产地”报头。如果不透明响应满足您的需要,请将请求的模式设置为“no- CORS”,以获取禁用CORS的资源。

EN

回答 2

Stack Overflow用户

发布于 2019-08-08 14:53:50

尝尝这个。

代码语言:javascript
复制
app.use((request, response, next) => {
   response.header("Access-Control-Allow-Origin", "*");
   response.header("Access-Control-Allow-Headers", "Content-Type");
   next();
});

代码语言:javascript
复制
app.use(function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "http://localhost:5000");
  next();
});
票数 0
EN

Stack Overflow用户

发布于 2019-08-08 14:44:12

只需在服务器上启用CORS即可。

  1. 安装cors
代码语言:javascript
复制
$ npm install --save cors
  1. 快速启用cors:
代码语言:javascript
复制
const cors = require('cors');
const express = require('express');

const app = express();
app.use(cors());

更多关于cors 这里的报道。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57415145

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档