JQuery AJAX http GET кросс-домен - требуются заголовки в ответ - PullRequest
0 голосов
/ 09 июля 2019

Я сделал веб-приложение, работающее на домене http://app.mydomain.tld и у меня есть API на https://api.mydomain.tld (API не разработаны мной).

Я выполняю вызов GET AJAX HTTPs с помощью jQuery, используя этот метод:

$.ajax({
    url: "https://api.mydomain.tld/GetSomething/read.php",
    method: "GET",
    contentType:"application/json; charset=utf-8",
    dataType:"json",
    async:false,
    headers: {"Accept": "application/json; odata=verbose" },
    success: function (data) { doSomething(); },
    error: function (data) { showError(); }
});

Этот вызов возвращает ошибку типа NetworkError: failed to execute 'send' on 'XMLHttpRequest': Failed to load 'https://api.mydomain.tld/GetSomething/read.php'.

Я добавил расширение Access-Control-Allow-Origin для Chrome, и вызов работает нормально.

Итак, я проверил заголовки ответа. Когда расширение Chrome НЕ включено, у меня есть следующие заголовки ответа:

Access-Control-Allow-Origin: *

Когда расширение включено, у меня есть следующие заголовки:

Access-Control-Allow-Headers: access-control-allow-methods,access-control-allow-origin
Access-Control-Allow-Methods: GET, PUT, POST, DELETE, HEAD, OPTIONS
Access-Control-Allow-Origin: *

Итак, мой вопрос, который мог бы дать очевидный ответ: нужны ли эти заголовки для правильных междоменных вызовов? Если да, нужен ли моим API приведенный ниже дополнительный код?

<?php
header("Access-Control-Allow-Origin","*");
header("Access-Control-Allow-Methods","GET, PUT, POST, DELETE, HEAD, OPTIONS");
header("Access-Control-Allow-Headers","access-control-allow-methods,access-control-allow-origin");
?>

Верно ли то, что я сказал, или я что-то упускаю, чтобы мой звонок работал без изменения кода API?

PS: если возможно, я бы не использовал JSONP.

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