跨源读取阻断(CORB)。

我使用Jquery AJAX调用了第三方API。我在控制台得到以下错误。

Cross-Origin Read Blocking (CORB) blocked cross-origin response MY URL with MIME type application/json.更多细节请参见https://www.chromestatus.com/feature/5629709824032768。

我使用了下面的代码进行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成功方法中没有。

请帮助我。

在大多数情况下,被封锁的响应不应该影响网页的行为,CORB 错误信息可以被安全地忽略。 例如,警告可能发生在被阻止的响应的主体已经为空的情况下,或者当响应将被传递到一个不能处理它的上下文时(例如,一个HTML文档,如404错误页面被传递到一个标签)。

https://www.chromium.org/Home/chromium-security/corb-for-developers

我不得不清理我的浏览器的缓存,我在这个链接中读到,如果请求得到一个空的响应,我们会得到这个警告错误。我的请求得到了一些CORS,所以这个请求的响应是空的,我所要做的就是清除浏览器的缓存,CORS就消失了。我收到CORS是因为chrome在缓存中保存了端口号,服务器只接受 "localhost:3010",而我在做 "localhost:3002",因为有缓存。

评论(0)

你必须在服务器端添加CORS:

如果你使用的是nodeJS,那么。

首先你需要使用下面的命令来安装 cors

npm install cors --save

现在,将以下代码到你的应用程序的起始文件中,如( app.js 或 server.js)。

var express = require('express');
var app = express();

var cors = require('cors');
var bodyParser = require('body-parser');

//enables cors
app.use(cors({
  'allowedHeaders': ['sessionId', 'Content-Type'],
  'exposedHeaders': ['sessionId'],
  'origin': '*',
  'methods': 'GET,HEAD,PUT,PATCH,POST,DELETE',
  'preflightContinue': false
}));

require('./router/index')(app);
评论(7)

响应头文件一般在服务器上设置。在服务器端设置'访问控制-允许头信息''内容-类型'

评论(3)