Бэкэнд Parse работает на Back4App.У них есть возможность облачного кода, которая позволяет вам размещать NodeJ как функции, которые вы можете вызывать из JavaScript на своем сайте.Я не очень хорошо знаком с NodeJ, поэтому с синтаксисом моей функции может быть что-то не так.
Функция NodeJs должна вызывать REST API почтового пистолета, и я вызываю функцию облачного кода Parse из Coffee Script на моем сайте,Я создал свою функцию, получив вызов REST для mailgun, работающий на Postman, а затем с помощью генерации кода Postman для генерации функции NodeJ.
Проблема в том, что когда я вызываю функцию облачного кода 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!");
});