首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Back4App解析云代码函数时CORS错误

使用Back4App解析云代码函数时CORS错误
EN

Stack Overflow用户
提问于 2018-12-02 20:12:51
回答 1查看 1.1K关注 0票数 4

我在Back4App上运行了一个Parse后端。它们具有云代码功能,允许您将类似于NodeJs的函数放在站点上的javascript中调用。我不太熟悉NodeJs,所以我的函数语法可能有问题。

NodeJs函数需要调用mailgun REST,我从站点上的Coffee脚本调用Parse云代码函数。我创建了我的函数,方法是让REST调用mailgun,处理Postman,然后使用Postman的代码生成来生成NodeJs函数。

问题是,当我从我的网站调用Parse云代码函数时,我会得到以下错误:

错误来源http://localhost:9000是不允许的访问控制-允许-起源.加载资源失败:访问控制-允许-原产地不允许原产地http://localhost:9000。(发送电子邮件,第0行)

无论是来自本地测试站点还是托管测试站点,我都会收到此错误。

下面是Back4App解析服务器上的云代码函数:

代码语言:javascript
复制
    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);
    });
});

我使用以下咖啡脚本从我的网站调用这个解析云代码函数:

代码语言:javascript
复制
   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个响应。

代码语言:javascript
复制
Parse.Cloud.define("hello", function(request, response) {
  response.success("Hello world!");
});
EN

回答 1

Stack Overflow用户

发布于 2018-12-06 18:27:31

我想您忘记了{和}定义函数。您还必须使用=>而不是->。

试着用承诺中的“然后”和“捕捉”。以下是您可以用来测试的两个片段:

代码语言:javascript
复制
  Parse.Cloud.run('sendemail', data).then(() => {
      console.log(result)
      console.log("success")
    }).catch((error) => {
      console.log(error)
      console.log("fail")
    });

或者另一个:

代码语言:javascript
复制
  Parse.Cloud.run('sendemail', data, {
    success: () => {
      console.log(result)
      console.log("success")
    },
    error: (error) => {
      console.log(error)
      console.log("fail")
    }
  });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53584187

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档