Php 在Wordpress中使用Sendgrid API
我试图在Wordpress上使用Sendgrid API,但出现了此错误 检查时Php 在Wordpress中使用Sendgrid API,php,angularjs,wordpress,.htaccess,Php,Angularjs,Wordpress,.htaccess,我试图在Wordpress上使用Sendgrid API,但出现了此错误 检查时 XMLHttpRequest cannot 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-doc
XMLHttpRequest cannot 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://localhost2' is therefore not allowed access.
首先,我认为这是一个需要HTTPS的服务,所以我在本地MAMP服务器上设置了HTTPS,但仍然不起作用,然后我尝试了多种策略,即更改htaccess文件,在文件中添加CORS头,但没有真正起作用
$http.post('https://api.sendgrid.com/v3/mail/send',mail,{ headers: {
'Authorization': 'Bearer MY IDENTICATION',
'Content-Type': 'application/json'
}})
.success(function(data){
console.log('Error' + data);
})
.error(function(data){
console.log('Error' + data);
});
这是我用来发布到API的角度函数
谁能帮我解释一下错误的确切含义(或者我遗漏了什么)我不知道Angular,所以我可能不完全理解架构。在我看来,您正在尝试从客户端的浏览器进行API调用。但是,根据Sendgrid的文档: 当您有一个只接触API的浏览器应用程序时 API密钥必须嵌入到应用程序中。任何有权访问 仅浏览器应用程序可以访问所有Javascript源代码, 包括API密钥 公开访问API密钥可能会导致 使用API密钥验证API调用-这是一个重要的问题 您和SendGrid的安全问题 通过
不要从前端的浏览器进行API调用,而是确保调用是从后端应用程序本身进行的。您遇到了浏览器的跨源策略-sendgrid不仅允许从其他域访问其API,还允许接受sendgrid.com本身。您可以使用中间件或代理绕过此限制 我为我的一个Angular项目编写了一个小型HTTP代理,可以使用您的凭据和一键部署在Heroku上托管:
sendGridCORS策略不允许浏览器调用其API(除非您位于“sendGrid.API docs.io”域中)。。。您必须从服务器发送电子邮件 但如果只是出于测试或开发目的,您可以在github上使用我的演示 将您的数据发布到 同样的问题,比如: