Не могу отправить данные в Google Spreadsheets

146
08 февраля 2018, 18:28

Пытаюсь отправить данные из формы в таблицу гугла. При отправке появляется ошибка

Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource

Подскажите, пожалуйста, как именно нужно осуществлять запрос чтобы этой ошибки не возникало.

Данный метод подсмотрел здесь https://medium.com/@dmccoy/how-to-submit-an-html-form-to-google-sheets-without-google-forms-b833952cc175

Единственное что в примере используется jquery для отправки, а моя функция выглядит так:

var xhr2 = new XMLHttpRequest();
xhr2.open('GET', googleSheetUrl, true);
xhr2.setRequestHeader('Content-type', 'application/json');
xhr2.setRequestHeader('Access-Control-Allow-Origin', '*');
xhr2.send(googleData);

В прочем с jquery у меня та же самая ошибка появляется.

И еще одно - тестирую все на реальном хостинге, а не на локальном.

Заранее спасибо за помощь!

Answer 1

Ваша проблема состоит в том что сервер устанавливает заголовок Access-Control-Allow-Origin а не клиент. Простым языком на сервере есть список разрешенных адресов (если не установлен флаг Access-Control-Allow-Origin: * т.е. все адреса), если ваш адрес не имеется в списке он вам возвратит:

Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource

Статью которую вы читали написано:

The last two of these three options are extremely important to set correctly or you won’t be able to access your script with an AJAX request. You must execute the app as yourself and you must give “Anyone, even anonymous” access to the app. Without these settings your script will reject any request from a different server, like your form’s AJAX request, because it won’t be configured to allow for cross-origin resource sharing (CORS).

Once you’ve configured these options, go ahead and click “Deploy.”

You will the be presented with the URL for your web app. This is where we’ll be sending our AJAX request so copy that URL and save it for later.

Почитайте про технологию CORS.

READ ALSO
Как от числа отнять переменную JavaScript

Как от числа отнять переменную JavaScript

Пользователь указывает свой возраст, а я хочу посчитать в каком году он родилсяКод выглядит так:

232
getimagesize() failed to open stream: Too many open files

getimagesize() failed to open stream: Too many open files

Запускаю скрипт на локальной машине, он открывает изображение, делает ресайз и сохраняет

207
php array foreach, древо массива

php array foreach, древо массива

Здравствуйте

182