Zavolal jsem API třetí strany pomocí Jquery AJAX. V konzoli se mi zobrazuje následující chyba:
Cross-Origin Read Blocking (CORB) zablokoval cross-origin odpověď MY URL s typem MIME application/json. Další podrobnosti naleznete na adrese https://www.chromestatus.com/feature/5629709824032768.
Pro volání Ajaxu jsem použil následující kód :
$.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....=================");
}
});
Při kontrole ve Fiddleru jsem získal data v odpovědi, ale ne v metodě Ajax success.
Prosím, pomozte mi.
Ve většině případů by zablokovaná odpověď neměla ovlivnit chování webové stránky a chybovou zprávu CORB lze bezpečně ignorovat. Varování se může objevit například v případech, kdy tělo blokované odpovědi již bylo prázdné, nebo když měla být odpověď doručena do kontextu, který ji nemůže'zpracovat (např. dokument HTML, jako je chybová stránka 404, doručovaná do tagu ).
https://www.chromium.org/Home/chromium-security/corb-for-developers
Musel jsem si vyčistit cache prohlížeče'v tomto odkazu jsem se dočetl, že pokud při požadavku dostaneme prázdnou odpověď, dostaneme tuto varovnou chybu. Na můj požadavek jsem dostával nějaký CORS, a tak se odpověď tohoto požadavku dostala prázdná, Stačilo vyčistit cache prohlížeče'a CORS zmizel. Dostával jsem CORS, protože chrome uložil číslo PORT na cache, Server by prostě přijal localhost:3010
a já jsem dělal localhost:3002
, kvůli cache.
Na straně serveru musíte přidat CORS:
Pokud používáte nodeJS, pak:
Nejprve musíte nainstalovat cors
pomocí níže uvedeného příkazu :
npm install cors --save
Nyní přidejte následující kód do počátečního souboru vaší aplikace, například ( app.js nebo 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);
Hlavičky odpovědí se obvykle nastavují na serveru. Nastavte 'Access-Control-Allow-Headers'
na 'Content-Type'
na straně serveru.