我在Back4App上运行了一个Parse后端。它们具有云代码功能,允许您将类似于NodeJs的函数放在站点上的javascript中调用。我不太熟悉NodeJs,所以我的函数语法可能有问题。
NodeJs函数需要调用mailgun REST,我从站点上的Coffee脚本调用Parse云代码函数。我创建了我的函数,方法是让REST调用mailgun,处理Postman,然后使用Postman的代码生成来生成NodeJs函数。
问题是,当我从我的网站调用Parse云代码函数时,我会得到以下错误:
错误来源http://localhost:9000是不允许的访问控制-允许-起源.加载资源失败:访问控制-允许-原产地不允许原产地http://localhost:9000。(发送电子邮件,第0行)
无论是来自本地测试站点还是托管测试站点,我都会收到此错误。
下面是Back4App解析服务器上的云代码函数:
Parse.Cloud.define("sendemail", function(request, response) {
var request = require("request");
var options = { method: 'POST',
url: 'https://api.mailgun.net/v3/mg.mysite.com/messages',
headers:
{ 'Access-Control-Allow-Origin':'*',
'Access-Control-Allow-Headers':'X-Requested-With',
'Access-Control-Allow-Headers':'Content-Type',
'Postman-Token': 'token',
'cache-control': 'no-cache',
Authorization: 'Basic <auth_token>',
'Content-Type': 'application/x-www-form-urlencoded',
'content-type': 'multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' },
formData:
{ from: 'MySite.com <quote@mysite.com>',
to: 'myemail@gmail.com',
subject: 'Email Test',
text: 'Email Test' } };
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
});我使用以下咖啡脚本从我的网站调用这个解析云代码函数:
Parse.Cloud.run('sendemail', data, {
success: () ->
console.log(result)
console.log("success")
,
error: () ->
console.log(error)
console.log("fail")
});似乎在Back4App上有一个设置是我所缺少的。我已经搜索了所有的Parse设置,我没有看到指定访问控制-允许-原产地的位置。我已经搜索了Back4App和社区组的API文档。社区小组提到了这里这个问题,但是除了联系community@back4app.com之外,并没有给出真正的答案。我已经做过了,但我需要尽快得到答案。
在Back4App上还有一个名为hello的测试函数,我可以调用该函数并获得200个响应。
Parse.Cloud.define("hello", function(request, response) {
response.success("Hello world!");
});发布于 2018-12-06 18:27:31
我想您忘记了{和}定义函数。您还必须使用=>而不是->。
试着用承诺中的“然后”和“捕捉”。以下是您可以用来测试的两个片段:
Parse.Cloud.run('sendemail', data).then(() => {
console.log(result)
console.log("success")
}).catch((error) => {
console.log(error)
console.log("fail")
});或者另一个:
Parse.Cloud.run('sendemail', data, {
success: () => {
console.log(result)
console.log("success")
},
error: (error) => {
console.log(error)
console.log("fail")
}
});https://stackoverflow.com/questions/53584187
复制相似问题