Подтвердить что ты не робот

Как сделать XHR/ajax-запросы для Google Apps Script ContentService?

У меня есть простой Google Apps Script ContentService, который испускает строку типа "Hello world Sat Jul 14 2012 14:17:21 GMT + 1000 (EST)" URL-адрес https://script.google.com/macros/s/AKfycbxbFFG95mi8PWVNCE8366XaxnXQrt6p7p3OWbclXch_bbWczQ/exec, и он открыт для анонимного. Не стесняйтесь ударить его. Код:

function doGet() {
  var output = ContentService.createTextOutput()
      .setMimeType(ContentService.MimeType.TEXT)
      .setContent("Hello world " + new Date());
  Logger.log(output.getContent());
  return output;
}

Когда я посещаю URL-адрес в браузере, он возвращает строку, как ожидалось (pass.png). Когда я использую тот же URL-адрес в XHR (ajax-вызов), он терпит неудачу с пустой ошибкой. В инструментах разработчика в Chrome перенаправление "(отменено)" (fail.png). Вот код для воспроизведения сбоя:

<!DOCTYPE html>
<html>
<head>
<script>
function loadXMLDoc() {
  xhr=new XMLHttpRequest();
  xhr.onreadystatechange=function() {
  if (xhr.readyState==4 && xhr.status==200) {
    document.getElementById("myDiv").innerHTML=xhr.responseText;
    }
  };
  xhr.open("GET","https://script.google.com/macros/s/AKfycbxbFFG95mi8PWVNCE8366XaxnXQrt6p7p3OWbclXch_bbWczQ/exec",true);
  xhr.send();
}
</script>
</head>
<body>

<h2>Using the XMLHttpRequest object</h2>
<div id="myDiv"></div>
<button type="button" onclick="loadXMLDoc()">Get Content via XHR</button>
</body>
</html>

Прямой запрос: DIrect requestpass.png XHR запрос: enter image description here Мой вопрос (надеюсь, достаточно конкретный): Как мне сделать XHR-звонки с простой старой веб-страницы на example.com для получения контента из анонимных скриптов Google Apps Script ContentService?

4b9b3361

Ответ 1

Я не уверен, что в настоящее время это возможно. Мы рассмотрели метод JSONP (который работает, я его протестировал), но я не думаю, что тестирование XHR против ContentService было когда-либо проверено. Для этого нам, вероятно, понадобится создать заголовки CORS. Пожалуйста, напишите запрос функции на трекер проблемы, и мы увидим, можно ли это сделать.