Sendgrid API - JSON call



我正在尝试从SendGrid API 接收数据

$.ajax({
    type:'GET',
    url:"https://sendgrid.com/api/bounces.get.json",
    data: {api_user:'username',api_key:'userkey',date:1},
    success: function(data){    
        console.log(data)       
    },
    crossDomain: true,
    dataType: 'jsonp',
    error:function(a,b,c){
        console.log(a);
    }
}); 

控制台显示

对象{readyState=4,status=200,statusText="success"}

parserror

错误:jQuery17208301184673423685_1374641217666未调用

错误或问题在哪里?

问题是SendGrid不支持jsonp。

不幸的是,切换到纯JSON也不起作用,因为SendGrid没有CORS头,浏览器也不允许您访问页面。简而言之,您不能直接向SendGrid发出AJAX请求。

然而,通常情况下,这是更好的,因为所有SendGrid端点都需要身份验证,并且在AJAX请求中包含您的用户名和密码将允许用户接受它们,然后使用它们发送电子邮件。

要在前端获取这些统计数据,您需要一个服务器来获取它们,并将它们输出到您的域或具有CORS配额的域。

这里有一个一键解决方案!

  1. 将SendGrid代理实例部署到Heroku
  2. 使用{your-sendgrid-proxy}.herokuapp.com而不是api.sendgrid.com
  3. 完成(真的)

工作原理:

  1. 它使用express http代理创建了一个节点驱动的http代理
  2. 它添加了所需的标头,如AuthorizationContent-Type
  3. 它覆盖Access-Control-Allow-Origin*,使您的浏览器CORS没有警告

看看魔法是如何发挥作用的。欢迎反馈!

最新更新