Cross-Origin Read Blocking (CORB)

10 浏览
0 Comments

Cross-Origin Read Blocking (CORB)

我使用Jquery AJAX调用了第三方API。控制台中出现了以下错误:

Cross-Origin Read Blocking (CORB) blocked cross-origin response MY URL with MIME type application/json. See https://www.chromestatus.com/feature/5629709824032768 for more details.

我使用了以下代码来进行Ajax调用:

$.ajax({
  type: 'GET',
  url: My Url,
  contentType: 'application/json',
  dataType:'jsonp',
  responseType:'application/json',
  xhrFields: {
    withCredentials: false
  },
  headers: {
    'Access-Control-Allow-Credentials' : true,
    'Access-Control-Allow-Origin':'*',
    'Access-Control-Allow-Methods':'GET',
    'Access-Control-Allow-Headers':'application/json',
  },
  success: function(data) {
    console.log(data);
  },
  error: function(error) {
    console.log("FAIL....=================");
  }
});

当我在Fiddler中进行检查时,我在响应中获得了数据,但并没有在Ajax成功方法中获得。

请帮帮我。

admin 更改状态以发布 2023年5月22日
0
0 Comments

大多数情况下,被阻止的响应不应影响网页的行为,可以安全地忽略 CORB 错误消息。例如,当被阻止的响应体已经为空时,或者当响应将被交付到无法处理它的上下文(例如,将 HTML 文档(如 404 错误页面)交付到一个 标签)时,警告可能会出现。我不得不清除浏览器的缓存,我在这个链接中阅读到,如果请求获得空的响应,我们就会收到这个警告错误。我的请求出现了一些 CORS,所以这个请求的响应变为空了,我所要做的就是清除浏览器的缓存,CORS 就消失了。我之所以收到 CORS 是因为 Chrome 保存了缓存中的端口号,服务器只接受localhost:3010而我是用localhost:3002,由于缓存造成的。

0
0 Comments

 dataType:'jsonp',

您正在进行一个JSONP请求,但是服务器正在以JSON形式响应。

浏览器拒绝尝试将JSON作为JSONP处理,因为这将是一种安全隐患。(如果浏览器尝试将JSON作为JSONP处理,则最好会失败)。

有关JSONP的更多详细信息,请参见此问题。请注意,这是一种令人讨厌的解决同源策略的hack,而该策略在CORS出现之前使用。 CORS是一个更清洁、更安全且更强大的解决方案。


看起来您正在尝试进行跨域请求,并且在一个大混乱的冲突指令堆中抛出了所有您能想到的东西。

您需要了解同源策略的工作原理。

有关详细指南,请参见此问题


现在关于您的代码的一些说明:

contentType: 'application/json',

  • 当您使用JSONP时,这将被忽略
  • 您正在进行GET请求。没有请求体来描述请求的类型。
  • 这将使跨域请求变得不简单,这意味着除了基本的CORS权限外,您还需要处理预检。

移除它。

 dataType:'jsonp',

  • 服务器未使用JSONP进行响应。

移除此内容。(您可以让服务器以JSONP方式响应,但CORS更好)。

responseType:'application/json',

这不是jQuery.ajax支持的选项。移除此内容。

xhrFields: {
      withCredentials: false },

这是默认设置。除非您使用ajaxSetup将其设置为true,否则请将其移除。

  headers: {
    'Access-Control-Allow-Credentials' : true,
    'Access-Control-Allow-Origin':'*',
    'Access-Control-Allow-Methods':'GET',
    'Access-Control-Allow-Headers':'application/json',
  },

  • 这些是响应头。它们属于响应,不属于请求。
  • 这将使跨域请求变得不简单,这意味着除了基本的CORS权限外,您还需要处理预检。
0