Ошибка 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")
}
});