Я работаю с JavaScript.XMLHttpRequest работает на консоли, но при использовании в теге скрипта как файл js показывает ошибку CORS
Вот мой код
const BASE_URL = "https://example.com/api";
export class BankApi {
constructor(XMLHttpRequest){
this.xhr = XMLHttpRequest;
}
getBankList(callback){
this.xhr.open("GET", BASE_URL+"/listbanks", true);
this.xhr.setRequestHeader('Content-Type', 'application/json');
this.xhr.send(null);
this.xhr.onreadystatechange = function(){
if (this.readyState != 4) return;
if (this.status == 200) {
var data = JSON.parse(this.responseText);
callback(data);
}
};
}
}
Я написал код в ES6, но у меня есть min.js с использованием спектрально-es2015-модули-UMD. я включил этот файл в клиентском проекте
Когда я называю
var bankApi = new BankApi(new XMLHttpRequest());
bankApi.getBankList(function(data){
console.log(data);
})
Я получаю ошибку
XMLHttpRequest cannot load https://example.com/api/listbanks.
Response to preflight request doesn't pass access control check:
No 'Access-Control-Allow-Origin' header is present on the requested resource.
Origin 'https://engineeringqna.com' is therefore not allowed access.
Но когда я сделать то же самое с консоли отладчика хромовой формы домена https://engineeringqna.com нет ошибка.
var xhr = new XMLHttpRequest();
xhr.open("GET","https://example.com/api/listbanks",true);
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.onreadystatechange = function(){
if (xhr.readyState == 4)
{
if (xhr.status == 200) {
console.log(data);
}
else {
alert("xhr Errors Occured");
}
}
}
xhr.send(null);
Ошибка. Я получаю данные в консоли. Может ли кто-нибудь объяснить мне, что здесь происходит?
спасибо.
Браузер не позволит коду из вашего домена доступа к домену из * другого * домена, если другой домен явно не разрешает его. – Pointy
Согласен. Но там сервер имеет конфигурацию для принятия запроса перекрестного домена. Я не могу понять, как работает копирование и вставка кода в консоли отладчика и не работает, когда код включен в проект и вызывается из консоли браузера. Также я попытался ввести угловой js $ http в консоль браузера. Здесь также, когда я сделал запрос $ http.get, я получил результат без проблем. –
Заголовок ошибки * No 'Access-Control-Allow-Origin' присутствует на запрошенном ресурсе. * Означает, что сервер не ** имеет конфигурацию для приема запросов междоменного доступа. – Pointy