Blocage de lecture inter-origine (CORB)

J'ai appelé l'API d'un tiers en utilisant Jquery AJAX. J'obtiens l'erreur suivante dans la console :

Cross-Origin Read Blocking (CORB) a bloqué la réponse MY URL avec le type MIME application/json. Voir https://www.chromestatus.com/feature/5629709824032768 pour plus de détails.

J'ai utilisé le code suivant pour l'appel 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....=================");
  }
});

Lorsque j'ai vérifié dans Fiddler, j'ai obtenu les données dans la réponse mais pas dans la méthode de succès Ajax.

Veuillez m'aider.

Dans la plupart des cas, la réponse bloquée ne devrait pas affecter le comportement de la page Web et le message d'erreur CORB peut être ignoré sans risque. Par exemple, l'avertissement peut survenir lorsque le corps de la réponse bloquée était déjà vide, ou lorsque la réponse allait être livrée à un contexte qui ne peut pas la gérer (par exemple, un document HTML tel qu'une page d'erreur 404 livrée à une balise ).

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

J'ai dû nettoyer le cache de mon navigateur, j'ai lu sur ce lien que, si la requête obtient une réponse vide, nous obtenons cette erreur d'avertissement. Je recevais des CORS sur ma requête, et donc la réponse de cette requête était vide. Tout ce que j'avais à faire était de vider le cache du navigateur, et les CORS ont disparu. Je recevais des CORS parce que le chrome avait enregistré le numéro de PORT dans le cache. Le serveur acceptait simplement localhost:3010 et je faisais localhost:3002, à cause du cache.

Commentaires (0)

Vous devez ajouter CORS du côté du serveur:

Si vous utilisez nodeJS alors :

D'abord vous devez installer cors en utilisant la commande ci-dessous :

npm install cors --save

Maintenant ajoutez le code suivant au fichier de départ de votre application comme ( app.js ou 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);
Commentaires (7)

Les en-têtes de réponse sont généralement définis sur le serveur. Définissez "Access-Control-Allow-Headers" sur "Content-Type" du côté du serveur.

Commentaires (3)