gcogco10 Ответов: 2

Доступ к xmlhttrequest заблокирован политикой CORS: на запрашиваемом ресурсе отсутствует заголовок "access-control-allow-origin".


Я не могу решить эту проблему, я использую Chrome. Идея я хочу скачать файл CVS с помощью Ajax call request.

Что я уже пробовал:

$(document).ready(function() {
    $("#download").click(function() {
      $.ajax({
        url:'https://www.thingspeak.com/channels/899906/feeds.json?api_key=F**&results=3',
        type:'GET',
        dataType:'json',
        success:function(response){
          window.location = response;
        }
      });

    });

  });


Я пытаюсь перейти по этой ссылке, идея заключается в том, чтобы загрузить с моей кнопки диапазон дат для поля. На VS code я могу сделать это без каких-либо проблем, включая использование самого URL-адреса, мой файл CVS действительно подходит. Считывание данных из всех полей в канале с помощью HTTP GET - MATLAB - MathWorks Benelux[^]

2 Ответов

Рейтинг:
2

F-ES Sitecore

Сайт, к которому вы обращаетесь, должен разрешить доступ к страницам за пределами своего домена через ajax. Он делает это, отправляя обратно заголовки, которые говорят, что то, что вы делаете, разрешено. Если целевой сайт этого не делает, то вы не можете написать сценарий доступа к нему. Именно для этого и существует CORS, чтобы явно остановить людей, делающих то, что делаете вы.

Чтобы предупредить ваш следующий вопрос, если бы существовал способ обойти это, это была бы не очень хорошая функция безопасности. Вам нужно будет посмотреть, есть ли соответствующий API, который предоставляет целевой сайт, который вы можете использовать.


gcogco10

По этой ссылке примеров не так уж много https://community.thingspeak.com/tutorials/javascript/parse-thingspeak-last-entry-feed-with-jquery/

Рейтинг:
0

gcogco10

Привет Команда

Однако мне удалось обойти эту проблему, и вот мое решение, которое я искал все это время.

$(document).ready(function() {
         $("#download").click(function() {
         $.ajax({
           url:'https://api.thingspeak.com/channels/899906/feeds.csv?start=2019-11-08%2019:10:08&end=2019-11-11%2019:11:11',
           crossDomain:true,
           type:'GET',
           data:{
             format:'csv',
           },
           success:function(response){
             window.location.href ='https://api.thingspeak.com/channels/899906/feeds.csv?start=2019-11-08%2019:10:08&end=2019-11-11%2019:11:11' ;
           },
           error:function() {
             $().text("There was an error processing your request.Please try again");
             }
         });
         });

       });


Проблема была в 2 вещах, я удаляю URL https://www-api.thingspeakcom/......???
Во-вторых, это было мое местоположение window.responce, чтобы получить ответ обратно в любом формате файла на моих данных. Спасибо всем


Richard Deeming

Почему вы запрашиваете URL-адрес через AJAX, ожидая его возвращения, а затем отбрасываете ответ и перенаправляете пользователя точно на тот же URL-адрес, который вы только что запросили?

Просто перенаправьте пользователя на этот URL-адрес в первую очередь.

$("#download").click(function() {
    window.location.href = 'https://api.thingspeak.com/channels/899906/feeds.csv?start=2019-11-08%2019:10:08&end=2019-11-11%2019:11:11';
});

gcogco10

Спасибо Ричарду Димингу, я проверил вторую логику, которую вы дали, логика, кажется, работает нормально и отправляет правильный формат даты в соответствии с запросом от ajax-вызова.