Ошибка CORS при использовании Back4App Parse Cloud Code Function

У меня есть анализ Parse работает на Back4App. У них есть возможность облачного кода, которая позволяет вам размещать NodeJ как функции, которые вы можете вызывать из JavaScript на своем сайте. Я не очень хорошо знаком с NodeJ, поэтому может быть что-то не так с моим синтаксисом функции.

Функция NodeJs должна вызывать REST API почтового пистолета, и я вызываю функцию облачного кода Parse из Coffee Script на моем сайте. Я создал свою функцию, получив вызов REST для mailgun, работающий на Postman, а затем с помощью генерации кода Postman сгенерировал функцию NodeJs.

Проблема в том, что когда я вызываю функцию облачного кода Parse с моего сайта, я получаю следующие ошибки:

[Error] Origin http://localhost:9000 is not allowed by Access-Control-Allow-Origin.
[Error] Failed to load resource: Origin http://localhost:9000 is not allowed by Access-Control-Allow-Origin. (sendemail, line 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 и не вижу места для указания Access-Control-Allow-Origin. Я искал документацию по API для Back4App и группы сообщества. Группа сообщества упоминает здесь вопрос, но на самом деле не дает ответа, кроме как связаться с community@back4app.com. Я сделал это, но мне нужен ответ в ближайшее время.

В Back4App также есть тестовая функция hello, которую я могу вызвать нормально и получить ответ 200.

Parse.Cloud.define("hello", function(request, response) {
  response.success("Hello world!");
});

1 ответ

Я думаю, что вы забыли {и}, чтобы определить функцию. Вы также должны использовать => вместо ->.

Попробуйте использовать "тогда" и "поймать" от обещания. Вот два фрагмента, которые вы можете использовать для тестирования:

  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")
    }
  });
Другие вопросы по тегам