GET XMLHttpRequest останавливается на состоянии готовности 4 и состоянии 0 - PullRequest
1 голос
/ 26 мая 2020

Я пытался получить статью с NewsAPI.org, но получил эту ошибку:

Access to XMLHttpRequest at 'https://newsapi.org/v2/top-headlines?country=us&category=general&apiKey=XXXXXXXXXXXXX' from origin 'null' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

И я заметил, что она останавливается на состоянии готовности 4 и статусе 0.

это так. код функции, которую я использую:

function getNews()
{
    var url = 'https://newsapi.org/v2/top-headlines?country='+country+'&category='+category+'&apiKey=XXXXXXXXXXXXX';
    var req = new XMLHttpRequest();
    req.open('GET' , url);
    req.send();

    req.onreadystatechange = function()
    {
        if(req.readyState == 4 && req.status == 200)   
            {
                news = JSON.parse(req.response);
                news = news.articles;
                displayNews();
            }
    }
}

Примечание. Я попытался добавить заголовок «Access-Control-Allow-Origin», но он не изменился.

1 Ответ

0 голосов
/ 26 мая 2020

Прежде всего, запрос xhr не останавливается на req.readystate == 4, а не на res.send(). Также CORS - это стандартная служба веб-безопасности, предоставляемая браузером для предотвращения утечки данных из другого источника.

Для локального тестирования вы можете обойти его, добавив заголовок:

Access-Control-Allow-Origin: *
...