我可以使用Postman发出成功的Mailgun请求,但是当我从React Native应用发出请求时,它会返回“禁止访问”。
export async function sendEmailApi(email: Email): Object {
const DOMAIN = "xxxx.mailgun.org";
const url = `https://api.mailgun.net/v3/${DOMAIN}/messages`;
const res = await axios.post(
url,
{
...email,
withCredentials: true,
headers: {
Accept: "application/json",
"Content-Type": "application/json"
}
},
{
auth: { username: "api", password: MailGunApiKey }
}
);
return res;
}
我发错请求了吗?关于运行时安全性差异吗?
另一个障碍:我一直在用React Native Debugger看到这个错误,所以我决定看看没有调试器会发生什么,所以我将代码设置为将结果(成功或捕获)发送到console.error
。但是没有连接调试器,我得到"Can't find variable: btoa"
。它甚至没有达到axios请求。
这很奇怪,因为我尝试使用btoa
包构造标头(而不是发送到axios的auth config参数),但随后放弃了这个想法,删除了所有对btoa的引用,甚至删除了该包。
另一个注意事项:当我使用导入的MailGunApiKey
作为密码时,检查生成的请求并将其与生成的请求邮递员进行比较(我在邮递员的身份验证选项卡中而不是在标头选项卡中使用了基本身份验证) ,则编码的身份验证字符串是相同的,只是应用程序的末尾添加了oA==
。
当我尝试仅在代码中使用字符串文字密码(而不是MailgunApiKey
变量)时,编码的身份验证字符串是相同的,但是应用返回了400,而不是401。