javascript #html #asp.net #webforms #cors
#javascript #HTML #asp.net #веб-формы #cors
Вопрос:
Моя цель
Я делаю файл .aspx в Microsoft Visual Studio. Я ожидаю, что система отсканирует QR-код, а затем отправит данные JSON на сторону сервера.
PS. Я использую XMLHttpRequest для отправки данных.
Что я получаю
Сначала я попытался передать его напрямую, он не работает, поэтому я проверяю его статус и readyStats, он показывает 1 (открыт) и 0 (не инициализирован) (я ожидаю 4 (готово) и 200 (ок)). responseText равен нулю. Затем я проверил свой браузер (Google Chrome), консоль показывает ошибку «Доступ к XMLHttpRequest по адресу ‘https://website-A.aspx » из источника «https://localhost:44371 ‘ заблокирован политикой CORS: ответ на предполетный запрос не проходит проверку контроля доступа: заголовок ‘Access-Control-Allow-Origin’ отсутствует назапрошенный ресурс «.
Что я пробовал
Итак, я искал решение для переполнения стека, в большинстве из них говорится, что мне нужно ввести заголовок Access-Control-Allow-Origin: * на сервер, но проблема в том, что у меня нет контроля над сервером, но я связался с ними, чтобы изменить код, чтобы попробовать егов конечном итоге Access-Control-Allow-Origin: * не работает, поэтому я искал альтернативу. Я пытался использовать плагин, такой как Moesif Origin amp; CORS Changer, но он показывает «Доступ к XMLHttpRequest в ‘https://website-A.aspx » из источника «https://localhost:44371 ‘ заблокирован политикой CORS: ответ на предполетный запрос не проходит проверку контроля доступа: значение заголовка ‘Access-Control-Allow-Origin’в ответе не должно быть подстановочного знака «*», если режим учетных данных запроса «включить». Режим учетных данных запросов, инициируемых XMLHttpRequest, контролируется атрибутом withCredentials .».
Ниже приведен мой код:
function onScanSuccess(qrCodeMessage) {
...
var url = "https://Website-A.aspx";
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.open("POST", url);
xhr.setRequestHeader("Accept", "application/json");
xhr.setRequestHeader("Content-Type", "application/json");
xhr.onreadystatechange = function () {
if (xhr.readyState === 4) {
console.log(xhr.status);
console.log(xhr.responseText);
}
};
//I hardcoded the data for testing
var data = {
"SOME_ID": "Value",
"SOME_TYPE": "Value",
"SOME_ID": "Value",
"SOME_AMT": "Value",
"SOME_AMT_CURRENCY": "Value",
"SOME_DESC": "Value",
...
};
xhr.send(data);
}
Есть ли способ решить эту проблему без изменения кода на стороне сервера или в обход CORS?
Я хочу решить эту проблему, изменив код только в том же .aspx, возможно ли это?
Если мой код не будет работать, есть ли другой способ сделать это?
Любая помощь будет оценена.
Ответ №1:
cors должен быть разрешен на стороне сервера. ваш код выглядит нормально.
извините, я пока не могу использовать функцию комментариев