В чем разница между функциями getJSON () и post () при выполнении запроса через домен? - PullRequest
0 голосов
/ 01 февраля 2019

Я пытаюсь получить доступ к WebAPI скрипта Служб Google с моего веб-сайта, используя javascript для передачи некоторого значения и создания файла Excel и загрузки его через этот API.

Я пробовал 2 следующим образом:

  1. Использование запроса POST с $ .post.

Мои значения много.Итак, во-первых, я использую POST-запрос с телом JSON значений списка.Браузер отклоняет ответ API из-за ошибки CORS.

Я исследовал CORS, чтобы понять его.В некоторых темах я обнаружил, что решение заключается в следующем втором способе.

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

Использование GET-запроса с $ .getJSON.

Я передаю JSON значений списка в параметр URL и выполняю GET-запрос.Работало нормально.

    var url = 'https://script.google.com/macros/s/' + api_id + '/exec?' + request_parameter_string;

    $.post(url, payload, function(data, textStatus) {
        // Do something
    }, 'json');

    $.getJSON(url, function(json_result) {
        // Do something
    })
    .fail(function() {
        // Do something
    });

Что я не понимаю, почему?Почему он работает с getJSON, но не работает с post?

Я думаю, что CORS работает с запросами GET и POST.И я проверил заголовок ответа с почтальоном.Заголовки одинаковы Access-Control-Allow-Origin →*.

Я думаю, что-то не так внутри функций getJSON и post.

* ОБНОВЛЕНИЕ: Обновление сообщения об ошибке POST CORS.

1 Ответ

0 голосов
/ 01 февраля 2019

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

Аналогично GET используется для показа рекламы, трекеров и аналитики со сторонних доменов.

Дополнительную информацию о политике одинакового происхождения и GET можно получить по адресу https://security.stackexchange.com/a/16221/9517

Как браузеры идентифицируют другие HTTP-глаголыразрешено для запроса перекрестного происхождения @ https://developer.mozilla.org/en-US/docs/Glossary/Preflight_request

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