Я создал веб-приложение с помощью Google Apps Script.
С моим серверным кодом, когда я делаю запрос на получение с использованием UrlFetchApp.fetch
UrlFetchApp.fetch("URL", {headers: {Authorization: "Bearer #ID"})
Правильный ответ возвращается, и все отлично работает!
Вот проблема, на веб-интерфейсе, когда я использую функцию fetch
, я получаю несколько ошибок.Вот как я использую fetch
fetch(URL, {headers: {Authorization: "Bearer #ID"})
Вот ошибки, которые я получаю:
- Получить URL 401 (неавторизовано) - я передаю те же учетные данные, что иЯ использовал для запроса UrlFetchApp.fetch, который работает на стороне сервера.
- Ошибка CORS: доступ к выборке по "URL" из источника "веб-URL сценария приложений Google" заблокирован политикой CORS: Нет "ДоступЗаголовок -Control-Allow-Origin 'присутствует в запрашиваемом ресурсе. Если непрозрачный ответ удовлетворяет вашим потребностям, установите режим запроса в' no-cors ', чтобы получить ресурс с отключенным CORS.
- Uncaught (вобещание) TypeError: Не удалось получить
Я прошёл через множество информации, имеющей отношение к CORS, и попробовал несколько шагов в решении проблемы, таких как:
- В необязательном аргументе к
fetch
я добавил mode:"cors"
и другие варианты, перечисленные в документации. - Я развернул веб-приложение сценариев Google Apps
- Когда я пытаюсь сделать запрос из ChromeКонсоле, я получаю ту же ошибку ... но когда я делаю это в почтальоне все работает.
- Я добавил поле
"Content-Type": "application/json"
в поле заголовков и получил те же ошибки.
Я знаю, что у меня гораздо больше исследований, связанных с CORS.Мой главный вопрос: почему выборка работает из среды сервера сценариев приложений Google, почему отправленный оттуда запрос не получает ту же ошибку CORS по сравнению с запросом с помощью метода API браузера fetch
?
Документация гласит, что:
Запросы, сделанные с использованием этой службы, исходят из набора пулов диапазонов IP-адресов.Вы можете просмотреть полный список IP-адресов, если вам нужен белый список или утвердить эти запросы.
Я предполагаю, что это означает, что запрос со стороны кода сервера принят или утвержден в этом списке,по сравнению с выполнением запроса на стороне клиента с теми же учетными данными.