Как решить эту проблему: блокировка чтения из разных источников (CORB) заблокировала ответ из разных источников

Предупреждение:

jquery-1.9.1.js: 8526 Блокировка чтения из разных источников (CORB) заблокировала ответ из разных источников https://www.metaweather.com/api/location/search/?query=lo с типом MIME application / json. Подробнее см. https://www.chromestatus.com/feature/5629709824032768.

Мой код:

<!DOCTYPE html>
<html>
<head>
  <title> Search API </title>
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/css/bootstrap.min.css"> 
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"> 
  </script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/js/bootstrap.min.js"> 
  </script> 
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
</head>
<body>
   <div class="container">
     <h2>API Search Whether</h2>    
     <div class="row">
        <div class="col-md-6">
            <input type="text" name="name" id="name" class="form-control">
        </div>
        <div class="col-md-2">              
            <button type="button" id="search" class="btn btn-primary btn-lg">Search</button>
        </div>
    </div>
    <br><br><br><br>
    <div class="row">
        <table class="table" border="2px">
            <thead>
                <tr style="color:blue; font-weight:bold;">
                    <td >Domain</td>
                    <td>Suffix</td>
                    <td>Expiry Date</td>
                    <td>Created At</td>
                    <td>Country</td>
                </tr>
            </thead>
            <tbody id="tbody">
            </tbody>
        </table>
    </div>
</div>  
<script src="https://unpkg.com/sweetalert/dist/sweetalert.min.js"> 
</script>
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@8"></script>
<script type="text/javascript">
    $("#search").click(function () 
    {
        $("#tbody").html("");           
        var $this = $(this);
        var loadingText = '<i class="fa fa-circle-o-notch fa-spin"></i>Loading...';
        $("#search").attr("disabled", true);
        if ($(this).html() !== loadingText) {
            $this.data('original-text', $(this).html());
            $this.html(loadingText);
        }   
        var name = $('#name').val();        
        var i;
        $.ajax({
            url: "https://www.metaweather.com/api/location/search/?query="+name,
            dataType:'json',
            headers: function(xhr){
                xhr.setRequestHeader('x-xss-protection' ,'1; mode=block');
                xhr.setRequestHeader('Content-Language' ,'en');
                xhr.setRequestHeader('x-content-type-options', 'nosniff');
                xhr.setRequestHeader('strict-transport- security' , 'max-age=2592000; includeSubDomains');
                xhr.setRequestHeader('Vary' , 'Accept-Language, Cookie');
                xhr.setRequestHeader('Allow' , 'GET, HEAD,OPTIONS');
                xhr.setRequestHeader('x-frame-options' ,'DENY');
                xhr.setRequestHeader('Content-Type' , 'application/json');
                xhr.setRequestHeader('X-Cloud-Trace-Context' , 'f2dd29a5a475c5489584b993c3ce670d');
                xhr.setRequestHeader('Date' , 'Thu, 14 Mar 2019 09:43:04 GMT');
                xhr.setRequestHeader('Server' , 'Google Frontend');
                xhr.setRequestHeader('Content-Length' , '100');
            },
            success: function (result) {
                var f = result;
                var content = '';
                var i;
                for (i = 0; i <= f[i] ; i++) {
                    content += "<tr>";
                    content = content+"<td>"+f[i].title+"</td>";
                    content = content + "</tr>";
                }
                $("#tbody").append(content);
                $this.html($this.data('original-text'));
                $("#search").attr("disabled", false);
            }});      
      });
   </script>
</body>

Я пробовал последние 4 часа, но без решения ... Заранее спасибо за помощь ...


person Smit Pipaliya    schedule 14.03.2019    source источник
comment
jquery-1.9.1.js - Опасно Срок службы jQuery 1.x и 2.x истек, и для них не предусмотрены исправления безопасности. Обновитесь до поддерживаемой версии jQuery.   -  person Quentin    schedule 14.03.2019
comment
У меня есть jquery-3.3.1.js, но ошибка @Quentin   -  person Smit Pipaliya    schedule 14.03.2019
comment
Сначала обработайте сообщение об ошибке first. Перед цитируемым вами сообщением об ошибке написано Access to XMLHttpRequest at 'https://www.metaweather.com/api/location/search/?query=fdf' from origin 'http://localhost:7007' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.   -  person Quentin    schedule 14.03.2019
comment
Это то, что я хочу решить. Другой ошибки нет ... @Quentin   -  person Smit Pipaliya    schedule 14.03.2019
comment
Когда я это проверяю   -  person Quentin    schedule 14.03.2019
comment
окк, я проверил ... @ Квентин   -  person Smit Pipaliya    schedule 14.03.2019
comment
Позвольте нам продолжить это обсуждение в чате.   -  person Smit Pipaliya    schedule 14.03.2019


Ответы (2)


Я не считаю это абсолютным ответом, потому что у меня такая же ошибка в созданном мной расширении Chrome. Теперь, следуя предложению CORB (Cross Origin Read Blocking), команда Chrome обновила систему безопасности браузера до версии 73+, которая защищает от уязвимостей Spectre и Meltdown.

По этой ссылке они предоставляют средства того, как разработчикам следует исправлять ошибки из этого обновления: https://www.chromestatus.com/feature/5629709824032768.

Родительский ресурс для этого: https://www.chromestatus.com/feature/5629709824032768, когда Я нашел свое исправление, я буду обновлять этот пост.

person Samuel Nwaokoro    schedule 14.03.2019
comment
Вы нашли исправление? - person Callam; 17.05.2019
comment
ссылка chromium.org/Home/chromium-security/ дает нам представление о том, как двигаться вперед. может быть проблема в вызовах ajax в сценариях содержимого? - person vkGunasekaran; 04.03.2020
comment
Да, вышеприведенная идея сработала ... просто переместил мой вызов ajax из сценариев содержимого в фоновый файл js и запустил функцию через postMessage, она сработала, как ожидалось - person vkGunasekaran; 04.03.2020

У меня тоже возникла эта проблема с нашим расширением Chrome недавно, и я закрыл его, переместив все HTTP-запросы на фоновую страницу, как рекомендовано командой Chrome по адресу 3. Ограничение запросов на другие источники на фоновых страницах

Если фоновая страница расширения просто извлекает и передает любой URL-адрес по выбору сценария содержимого (фактически действуя как открытый прокси), возникают аналогичные проблемы безопасности. То есть скомпрометированный процесс рендеринга может захватить сценарий содержимого и попросить фоновую страницу получить и передать конфиденциальные URL-адреса по выбору злоумышленника. Вместо этого фоновые страницы должны получать данные только с URL-адресов, которые намереваются автором расширения, что в идеале представляет собой небольшой набор URL-адресов, который не подвергает риску конфиденциальные данные пользователя.

person Athman    schedule 17.04.2019