Как ОТПРАВИТЬ данные json на сервер? (Ошибка CORS)

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 должен быть разрешен на стороне сервера. ваш код выглядит нормально.

извините, я пока не могу использовать функцию комментариев