Как мне разрешить запросы CORS в моем скрипте Google? - PullRequest
0 голосов
/ 22 ноября 2018

Я хочу опубликовать свою контактную форму в моем скрипте Google, который отправит мне электронное письмо.Я использую следующий код:

var TO_ADDRESS = "example@gmail.com"; // where to send form data

function doPost(e) {

  var callback = e.parameter.callback;

  try {
    Logger.log(e); // the Google Script version of console.log
    MailApp.sendEmail(TO_ADDRESS, "Contact Form Submitted",
                      JSON.stringify(e.parameters));
    // return json success results
    return ContentService
          .createTextOutput(callback+
          JSON.stringify({"result":"success",
                          "data": JSON.stringify(e.parameters) }))
          .setMimeType(ContentService.MimeType.JSON);
  } catch(error) { // if error return this
    Logger.log(error);
    return ContentService
          .createTextOutput(callback+JSON.stringify({"result":"error", 
          "error": e}))
          .setMimeType(ContentService.MimeType.JSON);
  }
}

Когда я пытаюсь опубликовать ссылку на URL-адрес скрипта Google, я получаю следующую ошибку:

Доступ к XMLHttpRequest по адресу https://script.google.com/macros/s/~~myscriptid~~/exec' from origin 'http://localhost:4200' заблокирован политикой CORS: Ответ на запрос предварительной проверки не проходит проверку контроля доступа: в запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin».

Понятия не имею, как добавить CORS-фильтр в мой скрипт Google.

Я знаю, что скрипт работает, я протестировал его с помощью этого плагина:

https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi

1 Ответ

0 голосов
/ 23 ноября 2018

Насколько я понял, у вас есть приложение, которое будет запущено на пользовательском домене.И он должен получить доступ к скрипту в облаке Google.

Плохая новость: невозможно пропустить проверку CORS на стороне вашего приложения (до тех пор, пока простой запрос , который я считаю не вашим делом).

Необходимо указать Access-Control-Allow-Origin на стороне Google Cloud :

Облачное хранилище позволяет настраивать конфигурацию CORS только на уровне сегмента.Вы можете установить конфигурацию CORS для сегмента, используя инструмент командной строки gsutil, XML API или JSON API.Для получения дополнительной информации о настройке конфигурации CORS в сегменте см. Раздел Настройка общего доступа к ресурсам между источниками (CORS).Дополнительные сведения об элементах конфигурации CORS см. В разделе Set Bucket CORS.

Для получения ответа из облачного хранилища, содержащего заголовки CORS, можно использовать любой из следующих URL-адресов запросов XML API:

storage.googleapis.com / [BUCKET_NAME]

[BUCKET_NAME] .storage.googleapis.com

Если по какой-либо причине это не поможет, вам потребуется настроить собственный сервер в качествепрокси:

ваше клиентское приложение <-> ваш бэкэнд, который возвращает Access-Control-Allow-Origin <-> облако Google

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...