2

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

错误或问题在哪里?

4

2 回答 2

5

问题是 SendGrid 不支持 jsonp。

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

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

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

于 2013-07-24T23:24:18.600 回答
0

一键解决方案来了!

  1. 将您的SendGrid 代理实例部署到 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免费警告

看看魔法是如何运作的。欢迎反馈!

于 2018-11-26T22:52:59.527 回答