Получение политики CORS: нет ошибки Access-Control-Allow-Origin - PullRequest
0 голосов
/ 30 мая 2020

Я пытаюсь интегрировать сторонний API, используя JavaScript, и он отлично работает на локальном компьютере, но он показывает ошибку в реальном времени, т.е.

Access to XMLHttpRequest at 'https://newsapi.org/v2/top-headlines?country=in&category=technology' from origin 'https://www.example.com' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

Вот мой JavaScript,

var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
        var myObj, i, x = "";
        myObj = JSON.parse(this.response);


        for (i=0;i<1;i++ in myObj.articles) {

            x += "<a href="+ myObj.articles[i].url +" target='blank'>"; 
            x += "<div style='background: linear-gradient(rgba(0,130,170,0),rgba(6,23,0,1)), url( "+ myObj.articles[i].urlToImage +" );height: 430px;margin-top: 20px;'>";          
            x += "</div>";          
            x += "</a>"; 

        }

        document.getElementById("technology").innerHTML = x;

    }
};

xmlhttp.open("GET", "https://newsapi.org/v2/top-headlines?country=in&category=technology", true);
xmlhttp.send();

HTML

<div style="background-color: gray;height: 430px;margin-top: 20px;">
   p id="technology"></p>
</div>

Я не понимаю, почему это происходит.

Пожалуйста, помогите мне, заранее спасибо.

Ответы [ 3 ]

1 голос
/ 30 мая 2020

Ответ прямо у вас на глазах - вам нужно заплатить, чтобы использовать его вне домена «localhost», что обычно означает, что вы разрабатываете сайт как разработчик, поэтому вы используете план «Разработчик». Но при запуске вам нужно заплатить: plan comparision

И вам явно не хватает API-ключа (если вы не вырезали его, чтобы вставить сюда;)) в запросе;)

0 голосов
/ 31 мая 2020
var proxy_url = 'https://cors-anywhere.herokuapp.com/';
var url = 'https://newsapi.org/v2/top-headlines?country=us&category=sports&pageSize=5&apiKey=<your-api-key>';

Теперь вы можете использовать proxy_url, чтобы избежать ошибки политики CORS, добавив proxy_url перед вашим URL-адресом с API-KEY

new_url = proxy_url + url
0 голосов
/ 30 мая 2020

Как упоминалось @ chris-g, вы не используете api-key. Вы можете попробовать использовать ключ API, и, возможно, проблема с CORS исчезнет. Если вы все еще получаете CORS, попробуйте простой jquery $ajax с jsonp или попробуйте простой прокси-сервер для пересылки запроса и ответа.

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