jquery - 如何解决此问题:跨域读取阻塞 (CORB) 阻止了跨域响应
问题描述
警告是:
jquery-1.9.1.js:8526 跨域读取阻塞 (CORB) 阻止了 MIME 类型 application/json的跨域响应https://www.metaweather.com/api/location/search/?query=lo 。有关详细信息,请参阅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 小时但没有解决方案...提前谢谢您的帮助...
解决方案
我不认为这是一个绝对的答案,因为我在我构建的 chrome 扩展上也有同样的错误。现在,根据 CORB (Cross Origin Read Blocking) 的建议,Chrome 团队在 73+ 版本中更新了浏览器的安全性,以防范幽灵和崩溃漏洞。
在此链接上,他们提供了开发人员应如何修复此更新中的错误的方法:https ://www.chromium.org/Home/chromium-security/corb-for-developers
父资源是:https ://www.chromestatus.com/feature/5629709824032768当我找到我的修复程序时,我会用它更新这篇文章。
推荐阅读
- mapbox - 从 Mapbox Tilequery API 下载数据
- ngrx - ngrx 实体适配器未更新所需属性的子属性
- python - 带有通配符的 Python LIKE 中的 MySql 查询
- javascript - 使用 javascript 删除包含标签和文本框的动态添加的表单组
- html - Bootstrap 4 .card 溢出时受父高度限制
- r - 分组并保留具有匹配模式的列
- flutter - 如何使用 Flutter 和 Dart 在后台监听 BLE 信号?
- c++ - 当从仿函数类模板参数推导出(衰减)类型时,完美转发失败。为什么?
- scala - Flink Streaming - 每天触发的 10 天事件时间窗口
- c++ - 使用 new[] 关键字时不允许不完整类型