我正在尝试从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配额的域。
这里有一个一键解决方案!
- 将SendGrid代理实例部署到Heroku
- 使用
{your-sendgrid-proxy}.herokuapp.com
而不是api.sendgrid.com
- 完成(真的)
工作原理:
- 它使用express http代理创建了一个节点驱动的http代理
- 它添加了所需的标头,如
Authorization
和Content-Type
- 它覆盖
Access-Control-Allow-Origin
到*
,使您的浏览器CORS
没有警告
看看魔法是如何发挥作用的。欢迎反馈!