【问题标题】:Sendgrid API - JSON callSendgrid API - JSON 调用
【发布时间】:2013-07-24 07:01:19
【问题描述】:

我正在尝试从 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"}

解析错误

错误:没有调用 jQuery17208301184673423685_1374648217666

错误或问题在哪里?

【问题讨论】:

    标签: json sendgrid


    【解决方案1】:

    问题是 SendGrid 不支持 jsonp。

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

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

    要在前端获取这些统计信息,您需要一台服务器来获取它们并将它们输出到您的域或具有 CORS 许可的域中。

    【讨论】:

    • 嗯,这就是它不起作用的原因。我今天正在与支持人员交谈,看来我需要使用 cURL,非常感谢。
    • cURL 可以工作,但它不会来自 JavaScript。无论您在服务器端使用什么语言,都会有某种 cURL 方法允许您提取数据。
    【解决方案2】:

    一键解决方案来了!

    1. Deploy 你的 SendGrid Proxy 实例到 Heroku
    2. 使用{your-sendgrid-proxy}.herokuapp.com 代替api.sendgrid.com
    3. 完成(真的)

    它是如何工作的:

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

    看看magic 是如何工作的。欢迎反馈!

    【讨论】:

      猜你喜欢
      • 2020-06-11
      • 2012-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-14
      • 1970-01-01
      • 2011-06-06
      相关资源
      最近更新 更多