【发布时间】:2018-08-05 22:03:32
【问题描述】:
我在向 SendGrid 电子邮件 API 发出 POST 请求时遇到问题。
当我提交表单以发出 POST 请求时,我在控制台中收到以下错误:
Failed to load https://api.sendgrid.com/v3/mail/send: Response to preflight
request doesn't pass access control check: The 'Access-Control-Allow-Origin'
header has a value 'https://sendgrid.api-docs.io' that is not equal to the
supplied origin. Origin 'https://example.com/' is therefore not
allowed access.
这是我的要求:
$.ajax({
method: "POST",
url: 'https://api.sendgrid.com/v3/mail/send',
headers: {
'Authorization':'bearer XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
'Content-Type':'application/json'
},
data: {
"personalizations": [
{
"to": [
{
"email": "example@email.com"
}
],
"subject": 'Contact form submission - example.com'
}
],
"from": {
"email": sender
},
"content": [
{
"type": "text/plain",
"value": content
}
]
}
});
当我将以下行添加到数据中时:
dataType: 'jsonp',
错误信息变为如下:
GET https://api.sendgrid.com/alongurl 405 (Method Not Allowed)
我不确定为什么当我将控制台设置为 POST 时它会发出获取请求。我不确定为什么会发生这种情况。希望有人能指出我正确的方向。谢谢。
【问题讨论】:
-
您是否尝试过在SendGrid API Documents Website 上使用代码生成 我不确定100%,但我也会检查您的
headers,因为这些可能区分大小写。Authorization=>authorization -
所有 JSONP 都是 GET 因为它们是脚本请求而不是 ajax 并且它们不支持 POST 或 headers 。如果 api 没有启用 CORS(很多都没有启用,因此您不会公开凭据),请在您的服务器上使用代理
-
我刚刚尝试使用 SendGrid 的代码生成工具。它基本上只在 VanillaJS 而不是 JQuery 中进行相同的调用,但我仍然收到相同的确切错误消息。
标签: javascript jquery ajax