Как устранить "ошибку несоответствия типа MIME", блокирующую ресурс, запрошенный AJAX из моего скрипта Google Apps? - PullRequest
0 голосов
/ 12 июля 2020

Я пытаюсь реализовать код здесь с Jquery.ajax, а не fetch.

Я получаю следующую ошибку при вызове AJAX:

The resource from “https://script.googleusercontent.com/macros/echo?...” was blocked due to MIME type (“application/json”) mismatch (X-Content-Type-Options: nosniff).

Скрипт Google Apps отлично работает с cURL, поэтому я подозреваю, что это какое-то несоответствие между моим (очень простым) скриптом GApps и моим клиентским скриптом.

Вот сценарий GApps:

function doGet(e) {
  const id = e.parameter.spreadsheetId;
  const sheetName = e.parameter.sheetName;
  const sheet = SpreadsheetApp.openById(id).getSheetByName(sheetName);
  const values = sheet.getDataRange().getValues();
  return ContentService.createTextOutput(JSON.stringify({values: values})).setMimeType(ContentService.MimeType.JAVASCRIPT);
}

Примечание: я безуспешно пытался изменить MimeType в последней строке на JSON.

Вот мои AJAX настройки звонка в клиентском скрипте:

var settings = {
    'cache': false,
    'dataType': "jsonp",
    'async': true,
    'crossDomain': true,
    'url': url,
    'method': 'GET',
    'headers': {
        'accept': 'application/json',
        'Access-Control-Allow-Origin': '*'
    }
};

Я работаю в Firefox. Аналогичная ошибка выдается в Chrome. Как я могу решить эту проблему?

1 Ответ

2 голосов
/ 12 июля 2020

Я считаю, что ваша цель следующая.

  • Вы хотите запросить веб-приложения, используя jQuery.ajax() вместо fetch.

Для этого, когда ваш settings изменен, как насчет следующей модификации?

Измененный скрипт:

var settings = {
  'url': url,
  'method': 'GET',
  'dataType':"json",
  'data': {spreadsheetId: "###SpreadsheetId###", sheetName: "###SheetName###"},
};
Пример скрипта:
var url = 'https://script.google.com/macros/s/###/exec';
var settings = {
  'url': url,
  'method': 'GET',
  'dataType':"json",
  'data': {spreadsheetId: "###SpreadsheetId###", sheetName: "###SheetName###"},
};
$.ajax(settings).done(res => {
  console.log(res.values);  // By this, you can retrieve the values of `{values: values}` from Web Apps.
}).fail(err => console.log(err));

Примечание:

  • Когда вы изменил скрипт веб-приложений Google Apps, повторно разверните веб-приложения как новую версию. Таким образом, последний сценарий отражается в веб-приложениях. Пожалуйста, будьте осторожны.
  • В модифицированном выше скрипте можно использовать ваш скрипт Google Apps.
  • В этом случае я могу подтвердить, что приведенный выше скрипт работал с Chrome.

Ссылка:

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