Я пишу простую библиотеку ajax для себя, и по какой-то причине я столкнулся с ошибкой.Вот пример кода, который возвращает {}
var Ajax = /** @class */ (function () {
function Ajax() {
}
Ajax.send = function (params) {
var xhttp = new XMLHttpRequest();
params.error = params.error || function () { };
params.callback = params.callback || function () {
if (this.readyState == 4 && this.status == 200) {
params.success(this);
}
else if (this.readyState == 4) {
params.error(this);
}
};
xhttp.onreadystatechange = params.callback;
xhttp.open(params.method, params.url, params.async || true);
for (var header in params.headers) {
xhttp.setRequestHeader(header, params.headers[header]);
}
//xhttp.setRequestHeader("Content-type", "application/json; charset=utf-8");
xhttp.send();
};
return Ajax;
}());
Ajax.send({
method: "GET",
url: "https://rectangular-nephew.glitch.me/",
success: function (e) {
document.write(e.responseText);
},
error: function (e) {
document.write("Error: " + e.status);
}
});
Все работает нормально, пока я не установлю тип контента на application/json
:
var Ajax = /** @class */ (function () {
function Ajax() {
}
Ajax.send = function (params) {
var xhttp = new XMLHttpRequest();
params.error = params.error || function () { };
params.callback = params.callback || function () {
if (this.readyState == 4 && this.status == 200) {
params.success(this);
}
else if (this.readyState == 4) {
params.error(this);
}
};
xhttp.onreadystatechange = params.callback;
xhttp.open(params.method, params.url, params.async || true);
for (var header in params.headers) {
xhttp.setRequestHeader(header, params.headers[header]);
}
///Here it is
xhttp.setRequestHeader("Content-type", "application/json; charset=utf-8");
xhttp.send();
};
return Ajax;
}());
Ajax.send({
method: "GET",
url: "https://rectangular-nephew.glitch.me/",
success: function (e) {
document.write(e.responseText);
},
error: function (e) {
document.write("Error: " + e.status);
}
});
И я понятия не имею, почему это происходит.Я уже установил заголовки на своем сервере:
response.set("Access-Control-Allow-Origin", "*");
response.set("Access-Control-Allow-Methods", "*");
response.set("Access-Control-Allow-Headers", "*");
Но это тоже не работает.Так в чем может быть проблема?
Ошибка:
Доступ к XMLHttpRequest по адресу https://rectangular -nephew.glitch.me / 'origin' https://www.typescriptlang.org' был заблокирован политикой CORS: Ответ на запрос предварительной проверки не проходит проверку контроля доступа: в запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin».