Отправить post запрос на rest api контроллер

185
16 августа 2018, 05:10

Нужно отправить POST запрос на rest-api контроллер и получить ответ с помощью скрипта в приложении asp web forms. Скрипт :

<script type="text/javascript">
        function clientfunction() {
            try {
                var request = new XMLHttpRequest;
                request.onreadystatechenge = function () {
                    if (request.readyState == 4) {
                        console.log('.....');
                    }
                    else
                    {
                        console.log('-----');
                    }
                }
                request.open("POST", "https://...", false);
                request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
                request.setRequestHeader("Access-Control-Allow-Origin", "*");
              request.send("post data");
            } catch (err) { console.log(err); }
        }
</script>

В консоли выводится ошибка :

Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.

Странно что в постмане при указании того же url, метода, тех же заголовков и строки с телом запроса все проходит как положено - запрос уходит и я получаю корректный ответ. В чем проблема скрипта или дело в браузере?

Answer 1

Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.

Странно что в постмане при указании того же url, метода, тех же заголовков и строки с телом запроса все проходит как положено - запрос уходит и я получаю корректный ответ.

Postman - тулза для девелопа, она по дифолту не проверяет, что происходит с CORS, браузер это уже проверяет.

В чем проблема скрипта или дело в браузере?

Возможно вам стоит присмотреться к fetch.

fetch(url, {
    method: 'post',
    headers: {
      "Content-type": "application/x-www-form-urlencoded; charset=UTF-8"
    },
    body: 'foo=bar&lorem=ipsum'
  })
  .then(res => res.json())
  .then(function(data) {
    console.log('Request succeeded with JSON response', data);
  })
  .catch(function(error) {
    console.log('Request failed', error);
  });

Cross-Origin Resource Sharing (CORS)

Введение в fetch

READ ALSO
Javascript помогите! [дубликат]

Javascript помогите! [дубликат]

На данный вопрос уже ответили:

126
Не получается загрузить скрипт c типом &ldquo;module&rdquo;

Не получается загрузить скрипт c типом “module”

В файле scriptjs есть фичи ЕS6 вроде import

164
Простой редактор изображений JS

Простой редактор изображений JS

Товарищи, возникла следующая проблема: сейчас работаю над одним сайтом, где появилась необходимость в простеньком редакторе изображений...

142
JS Cross Domain запрос на другой сайт

JS Cross Domain запрос на другой сайт

Я делаю скрипт для Tampermonkey и мне нужно сделать запрос на другой адресСамо собой мне выдает ошибку Access-Control-Allow-Origin

163